Skip to content

Commit 9c18177

Browse files
committed
Auto merge of #1902 - camelid:r-a, r=RalfJung
Add instructions for using rust-analyzer for Miri development r? `@RalfJung`
2 parents 04e5c78 + 141bf38 commit 9c18177

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

CONTRIBUTING.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,41 @@ There's a test for the cargo wrapper in the `test-cargo-miri` directory; run
107107
`./run-test.py` in there to execute it. Like `./miri test`, this respects the
108108
`MIRI_TEST_TARGET` environment variable to execute the test for another target.
109109

110+
## Configuring `rust-analyzer`
111+
112+
To configure `rust-analyzer` and VS Code for working on Miri, save the following
113+
to `.vscode/settings.json` in your local Miri clone:
114+
115+
```json
116+
{
117+
"rust-analyzer.checkOnSave.overrideCommand": [
118+
"./miri",
119+
"check",
120+
"--message-format=json"
121+
],
122+
"rust-analyzer.rustfmt.extraArgs": [
123+
"+nightly"
124+
],
125+
"rust-analyzer.rustcSource": "discover",
126+
"rust-analyzer.linkedProjects": [
127+
"./Cargo.toml",
128+
"./cargo-miri/Cargo.toml"
129+
]
130+
}
131+
```
132+
133+
> #### Note
134+
>
135+
> If you are [building Miri with a locally built rustc][], set
136+
> `rust-analyzer.rustcSource` to the relative path from your Miri clone to the
137+
> root `Cargo.toml` of the locally built rustc. For example, the path might look
138+
> like `../rust/Cargo.toml`.
139+
140+
See the rustc-dev-guide's docs on ["Configuring `rust-analyzer` for `rustc`"][rdg-r-a]
141+
for more information about configuring VS Code and `rust-analyzer`.
142+
143+
[rdg-r-a]: https://rustc-dev-guide.rust-lang.org/building/suggested.html#configuring-rust-analyzer-for-rustc
144+
110145
## Advanced topic: other build environments
111146

112147
We described above the simplest way to get a working build environment for Miri,
@@ -132,6 +167,8 @@ rustc. This avoids blocking all Miri development on landing a big PR.
132167

133168
### Building Miri with a locally built rustc
134169

170+
[building Miri with a locally built rustc]: #building-miri-with-a-locally-built-rustc
171+
135172
A big part of the Miri driver lives in rustc, so working on Miri will sometimes
136173
require using a locally built rustc. The bug you want to fix may actually be on
137174
the rustc side, or you just need to get more detailed trace of the execution

0 commit comments

Comments
 (0)