Unnamed repository; edit this file 'description' to name the repository.
| -rw-r--r-- | crates/rust-analyzer/src/config.rs | 9 | ||||
| -rw-r--r-- | crates/rust-analyzer/src/flycheck.rs | 5 |
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, |