fix: Honor `rust-analyzer.cargo.noDeps` option when fetching sysroot metadata
diff --git a/crates/project-model/src/sysroot.rs b/crates/project-model/src/sysroot.rs
index 4b34fc0..5a6c5b4 100644
--- a/crates/project-model/src/sysroot.rs
+++ b/crates/project-model/src/sysroot.rs
@@ -209,6 +209,7 @@
pub fn load_workspace(
&self,
sysroot_source_config: &RustSourceWorkspaceConfig,
+ no_deps: bool,
current_dir: &AbsPath,
progress: &dyn Fn(String),
) -> Option<RustLibSrcWorkspace> {
@@ -224,6 +225,7 @@
&library_manifest,
current_dir,
cargo_config,
+ no_deps,
progress,
) {
Ok(loaded) => return Some(loaded),
@@ -318,6 +320,7 @@
library_manifest: &ManifestPath,
current_dir: &AbsPath,
cargo_config: &CargoMetadataConfig,
+ no_deps: bool,
progress: &dyn Fn(String),
) -> Result<RustLibSrcWorkspace> {
tracing::debug!("Loading library metadata: {library_manifest}");
@@ -333,7 +336,7 @@
current_dir,
&cargo_config,
self,
- false,
+ no_deps,
// Make sure we never attempt to write to the sysroot
true,
progress,
diff --git a/crates/project-model/src/tests.rs b/crates/project-model/src/tests.rs
index 4f11af2..f229e9a 100644
--- a/crates/project-model/src/tests.rs
+++ b/crates/project-model/src/tests.rs
@@ -240,7 +240,7 @@
let cwd = AbsPathBuf::assert_utf8(temp_dir().join("smoke_test_real_sysroot_cargo"));
std::fs::create_dir_all(&cwd).unwrap();
let loaded_sysroot =
- sysroot.load_workspace(&RustSourceWorkspaceConfig::default_cargo(), &cwd, &|_| ());
+ sysroot.load_workspace(&RustSourceWorkspaceConfig::default_cargo(), false, &cwd, &|_| ());
if let Some(loaded_sysroot) = loaded_sysroot {
sysroot.set_workspace(loaded_sysroot);
}
diff --git a/crates/project-model/src/workspace.rs b/crates/project-model/src/workspace.rs
index 5bc64df..c5b36f1 100644
--- a/crates/project-model/src/workspace.rs
+++ b/crates/project-model/src/workspace.rs
@@ -391,6 +391,7 @@
toolchain.clone(),
target_dir.clone(),
)),
+ config.no_deps,
workspace_dir,
progress,
)
@@ -499,6 +500,7 @@
if let Some(sysroot_project) = sysroot_project {
sysroot.load_workspace(
&RustSourceWorkspaceConfig::Json(*sysroot_project),
+ config.no_deps,
project_root,
progress,
)
@@ -510,6 +512,7 @@
toolchain.clone(),
target_dir,
)),
+ config.no_deps,
project_root,
progress,
)
@@ -570,6 +573,7 @@
toolchain.clone(),
target_dir.clone(),
)),
+ config.no_deps,
dir,
&|_| (),
);
diff --git a/crates/rust-analyzer/src/cli/rustc_tests.rs b/crates/rust-analyzer/src/cli/rustc_tests.rs
index 740fcd8..f97bf83 100644
--- a/crates/rust-analyzer/src/cli/rustc_tests.rs
+++ b/crates/rust-analyzer/src/cli/rustc_tests.rs
@@ -75,8 +75,12 @@
};
let mut sysroot = Sysroot::discover(tmp_file.parent().unwrap(), &cargo_config.extra_env);
- let loaded_sysroot =
- sysroot.load_workspace(&RustSourceWorkspaceConfig::default_cargo(), &path, &|_| ());
+ let loaded_sysroot = sysroot.load_workspace(
+ &RustSourceWorkspaceConfig::default_cargo(),
+ false,
+ &path,
+ &|_| (),
+ );
if let Some(loaded_sysroot) = loaded_sysroot {
sysroot.set_workspace(loaded_sysroot);
}