aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2021-03-08 16:51:20 +0000
committerGitHub <[email protected]>2021-03-08 16:51:20 +0000
commitd57c9f79801762aa23adc21adbb638678268e96b (patch)
treeb4d67ea46bb187dde2200086eb9d3af731be3765 /docs
parentf2b8df17db254342eb17e8ac8df9e81e8b34775c (diff)
parent20007fd3a8aa16bec0c4f9ebc1489c157f846df4 (diff)
Merge #7891
7891: Improve handling of rustc_private r=matklad a=DJMcNab This PR changes how `rust-analyzer` handles `rustc_private`. In particular, packages now must opt-in to using `rustc_private` in `Cargo.toml`, by adding: ```toml [package.metadata.rust-analyzer] rustc_private=true ``` This means that depending on crates which also use `rustc_private` will be significantly improved, since their dependencies on the `rustc_private` crates will be resolved properly. A similar approach could be used in #6714 to allow annotating that your package uses the `test` crate, although I have not yet handled that in this PR. Additionally, we now only index the crates which are transitive dependencies of `rustc_driver` in the `rustcSource` directory. This should not cause any change in behaviour when using `rustcSource: "discover"`, as the source used then will only be a partial clone. However, if `rustcSource` pointing at a local checkout of rustc, this should significantly improve the memory usage and lower indexing time. This is because we avoids indexing all crates in `src/tools/`, which includes `rust-analyzer` itself. Furthermore, we also prefer named dependencies over dependencies from `rustcSource`. This ensures that feature resolution for crates which are depended on by both `rustc` and your crate uses the correct set for analysing your crate. See also [introductory zulip stream](https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Fwg-rls-2.2E0/topic/Fixed.20crate.20graphs.20and.20optional.20builtin.20crates/near/229086673) I have tested this in [priroda](https://github.com/oli-obk/priroda/), and it provides a significant improvement to the development experience (once I give `miri` the required data in `Cargo.toml`) Todo: - [ ] Documentation This is ready to review, and I will add documentation if this would be accepted (or if I get time to do so anyway) Co-authored-by: Daniel McNab <[email protected]>
Diffstat (limited to 'docs')
-rw-r--r--docs/user/generated_config.adoc2
1 files changed, 1 insertions, 1 deletions
diff --git a/docs/user/generated_config.adoc b/docs/user/generated_config.adoc
index 96788bc2c..5243bcbf6 100644
--- a/docs/user/generated_config.adoc
+++ b/docs/user/generated_config.adoc
@@ -107,7 +107,7 @@
107[[rust-analyzer.runnables.cargoExtraArgs]]rust-analyzer.runnables.cargoExtraArgs (default: `[]`):: 107[[rust-analyzer.runnables.cargoExtraArgs]]rust-analyzer.runnables.cargoExtraArgs (default: `[]`)::
108 Additional arguments to be passed to cargo for runnables such as tests or binaries.\nFor example, it may be `--release`. 108 Additional arguments to be passed to cargo for runnables such as tests or binaries.\nFor example, it may be `--release`.
109[[rust-analyzer.rustcSource]]rust-analyzer.rustcSource (default: `null`):: 109[[rust-analyzer.rustcSource]]rust-analyzer.rustcSource (default: `null`)::
110 Path to the rust compiler sources, for usage in rustc_private projects, or "discover" to try to automatically find it. 110 Path to the rust compiler sources, for usage in rustc_private projects, or "discover" to try to automatically find it. Any project which uses rust-analyzer with the rustcPrivate crates must set `[package.metadata.rust-analyzer] rustc_private=true` to use it.
111[[rust-analyzer.rustfmt.extraArgs]]rust-analyzer.rustfmt.extraArgs (default: `[]`):: 111[[rust-analyzer.rustfmt.extraArgs]]rust-analyzer.rustfmt.extraArgs (default: `[]`)::
112 Additional arguments to `rustfmt`. 112 Additional arguments to `rustfmt`.
113[[rust-analyzer.rustfmt.overrideCommand]]rust-analyzer.rustfmt.overrideCommand (default: `null`):: 113[[rust-analyzer.rustfmt.overrideCommand]]rust-analyzer.rustfmt.overrideCommand (default: `null`)::