Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--crates/rust-analyzer/src/config.rs9
-rw-r--r--crates/rust-analyzer/src/flycheck.rs5
2 files changed, 12 insertions, 2 deletions
diff --git a/crates/rust-analyzer/src/config.rs b/crates/rust-analyzer/src/config.rs
index 68f58c25ca..736e648938 100644
--- a/crates/rust-analyzer/src/config.rs
+++ b/crates/rust-analyzer/src/config.rs
@@ -2422,8 +2422,7 @@ impl Config {
});
let sysroot_src =
self.cargo_sysrootSrc(source_root).as_ref().map(|sysroot| self.root_path.join(sysroot));
- let config_path =
- self.cargo_configPath(source_root).as_ref().map(|path| self.root_path.join(path));
+ let config_path = self.cargo_config_path(source_root);
let extra_includes = self
.vfs_extraIncludes(source_root)
.iter()
@@ -2580,6 +2579,7 @@ impl Config {
extra_env: self.extra_env(source_root).clone(),
target_dir_config: self.target_dir_from_config(source_root),
set_test: true,
+ config_path: self.cargo_config_path(source_root),
}
}
@@ -2636,6 +2636,7 @@ impl Config {
extra_args: self.check_extra_args(source_root),
extra_test_bin_args: self.runnables_extraTestBinaryArgs(source_root).clone(),
extra_env: self.check_extra_env(source_root),
+ config_path: self.cargo_config_path(source_root),
target_dir_config: self.target_dir_from_config(source_root),
set_test: *self.cfg_setTest(source_root),
},
@@ -2644,6 +2645,10 @@ impl Config {
}
}
+ fn cargo_config_path(&self, source_root: Option<SourceRootId>) -> Option<AbsPathBuf> {
+ self.cargo_configPath(source_root).as_ref().map(|path| self.root_path.join(path))
+ }
+
fn target_dir_from_config(&self, source_root: Option<SourceRootId>) -> TargetDirectoryConfig {
match &self.cargo_targetDir(source_root) {
Some(TargetDirectory::UseSubdirectory(true)) => TargetDirectoryConfig::UseSubdirectory,
diff --git a/crates/rust-analyzer/src/flycheck.rs b/crates/rust-analyzer/src/flycheck.rs
index 3c9a8c147d..16dd9bee1f 100644
--- a/crates/rust-analyzer/src/flycheck.rs
+++ b/crates/rust-analyzer/src/flycheck.rs
@@ -51,6 +51,7 @@ pub(crate) struct CargoOptions {
pub(crate) extra_args: Vec<String>,
pub(crate) extra_test_bin_args: Vec<String>,
pub(crate) extra_env: FxHashMap<String, Option<String>>,
+ pub(crate) config_path: Option<AbsPathBuf>,
pub(crate) target_dir_config: TargetDirectoryConfig,
}
@@ -108,6 +109,9 @@ impl CargoOptions {
cmd.arg(features);
}
}
+ if let Some(config_path) = &self.config_path {
+ cmd.arg("--config").arg(config_path);
+ }
if let Some(target_dir) = self.target_dir_config.target_dir(ws_target_dir) {
cmd.arg("--target-dir").arg(target_dir.as_ref());
}
@@ -1169,6 +1173,7 @@ mod tests {
extra_args: vec![],
extra_test_bin_args: vec![],
extra_env: FxHashMap::default(),
+ config_path: None,
target_dir_config: TargetDirectoryConfig::default(),
},
ansi_color_output: true,