Unnamed repository; edit this file 'description' to name the repository.
Merge pull request #19807 from Veykril/lw-qyynkqysuyuy
fix: Don't overwrite `RUSTUP_TOOLCHAIN` if it is already set
Lukas Wirth 11 months ago
parent 6cd9c86 · parent 09ecc4c · commit 0843d06
-rw-r--r--crates/project-model/src/sysroot.rs7
-rw-r--r--crates/rust-analyzer/src/flycheck.rs6
-rw-r--r--crates/rust-analyzer/src/reload.rs4
3 files changed, 15 insertions, 2 deletions
diff --git a/crates/project-model/src/sysroot.rs b/crates/project-model/src/sysroot.rs
index c7c1b04318..d4055d9a0a 100644
--- a/crates/project-model/src/sysroot.rs
+++ b/crates/project-model/src/sysroot.rs
@@ -137,7 +137,12 @@ impl Sysroot {
}
let mut cmd = toolchain::command(tool.prefer_proxy(), current_dir, envs);
- cmd.env("RUSTUP_TOOLCHAIN", AsRef::<std::path::Path>::as_ref(root));
+ if !envs.contains_key("RUSTUP_TOOLCHAIN")
+ && std::env::var_os("RUSTUP_TOOLCHAIN").is_none()
+ {
+ cmd.env("RUSTUP_TOOLCHAIN", AsRef::<std::path::Path>::as_ref(root));
+ }
+
cmd
}
_ => toolchain::command(tool.path(), current_dir, envs),
diff --git a/crates/rust-analyzer/src/flycheck.rs b/crates/rust-analyzer/src/flycheck.rs
index fc312439d5..0e418240db 100644
--- a/crates/rust-analyzer/src/flycheck.rs
+++ b/crates/rust-analyzer/src/flycheck.rs
@@ -470,7 +470,11 @@ impl FlycheckActor {
let mut cmd =
toolchain::command(Tool::Cargo.path(), &*self.root, &options.extra_env);
if let Some(sysroot_root) = &self.sysroot_root {
- cmd.env("RUSTUP_TOOLCHAIN", AsRef::<std::path::Path>::as_ref(sysroot_root));
+ if !options.extra_env.contains_key("RUSTUP_TOOLCHAIN")
+ && std::env::var_os("RUSTUP_TOOLCHAIN").is_none()
+ {
+ cmd.env("RUSTUP_TOOLCHAIN", AsRef::<std::path::Path>::as_ref(sysroot_root));
+ }
}
cmd.arg(command);
diff --git a/crates/rust-analyzer/src/reload.rs b/crates/rust-analyzer/src/reload.rs
index 55ed192365..d7c6aeccf0 100644
--- a/crates/rust-analyzer/src/reload.rs
+++ b/crates/rust-analyzer/src/reload.rs
@@ -659,6 +659,10 @@ impl GlobalState {
.chain(
ws.sysroot
.root()
+ .filter(|_| {
+ !self.config.extra_env(None).contains_key("RUSTUP_TOOLCHAIN")
+ && std::env::var_os("RUSTUP_TOOLCHAIN").is_none()
+ })
.map(|it| ("RUSTUP_TOOLCHAIN".to_owned(), Some(it.to_string()))),
)
.collect(),