diff options
| author | Aleksey Kladov <aleksey.kladov@gmail.com> | 2021-04-12 11:04:36 +0300 |
|---|---|---|
| committer | Aleksey Kladov <aleksey.kladov@gmail.com> | 2021-04-12 15:29:31 +0300 |
| commit | 186c5c47cbfde4ae9d81dc67450c958cb6aece2c (patch) | |
| tree | 05141f6e9aa7d20c4ce2a8b59324a3d82d43f895 /crates/rust-analyzer/src/cli | |
| parent | 7be06139b632ee615fc18af04dd67947e2c794b2 (diff) | |
| download | rust-186c5c47cbfde4ae9d81dc67450c958cb6aece2c.tar.gz rust-186c5c47cbfde4ae9d81dc67450c958cb6aece2c.zip | |
feat: avoid checking the whole project during initial loading
Diffstat (limited to 'crates/rust-analyzer/src/cli')
| -rw-r--r-- | crates/rust-analyzer/src/cli/analysis_stats.rs | 1 | ||||
| -rw-r--r-- | crates/rust-analyzer/src/cli/diagnostics.rs | 3 | ||||
| -rw-r--r-- | crates/rust-analyzer/src/cli/load_cargo.rs | 10 | ||||
| -rw-r--r-- | crates/rust-analyzer/src/cli/ssr.rs | 9 |
4 files changed, 16 insertions, 7 deletions
diff --git a/crates/rust-analyzer/src/cli/analysis_stats.rs b/crates/rust-analyzer/src/cli/analysis_stats.rs index fe9f273b0aa..3f313456265 100644 --- a/crates/rust-analyzer/src/cli/analysis_stats.rs +++ b/crates/rust-analyzer/src/cli/analysis_stats.rs @@ -68,6 +68,7 @@ impl AnalysisStatsCmd { cargo_config.no_sysroot = self.no_sysroot; let load_cargo_config = LoadCargoConfig { load_out_dirs_from_check: self.load_output_dirs, + wrap_rustc: false, with_proc_macro: self.with_proc_macro, }; let (host, vfs, _proc_macro) = diff --git a/crates/rust-analyzer/src/cli/diagnostics.rs b/crates/rust-analyzer/src/cli/diagnostics.rs index 8b985716b03..0085d0e4dff 100644 --- a/crates/rust-analyzer/src/cli/diagnostics.rs +++ b/crates/rust-analyzer/src/cli/diagnostics.rs @@ -34,7 +34,8 @@ pub fn diagnostics( with_proc_macro: bool, ) -> Result<()> { let cargo_config = Default::default(); - let load_cargo_config = LoadCargoConfig { load_out_dirs_from_check, with_proc_macro }; + let load_cargo_config = + LoadCargoConfig { load_out_dirs_from_check, with_proc_macro, wrap_rustc: false }; let (host, _vfs, _proc_macro) = load_workspace_at(path, &cargo_config, &load_cargo_config, &|_| {})?; let db = host.raw_database(); diff --git a/crates/rust-analyzer/src/cli/load_cargo.rs b/crates/rust-analyzer/src/cli/load_cargo.rs index 310c36904e0..75bad1112bf 100644 --- a/crates/rust-analyzer/src/cli/load_cargo.rs +++ b/crates/rust-analyzer/src/cli/load_cargo.rs @@ -15,6 +15,7 @@ use crate::reload::{ProjectFolders, SourceRootConfig}; pub struct LoadCargoConfig { pub load_out_dirs_from_check: bool, + pub wrap_rustc: bool, pub with_proc_macro: bool, } @@ -52,7 +53,7 @@ pub fn load_workspace( }; let build_data = if config.load_out_dirs_from_check { - let mut collector = BuildDataCollector::default(); + let mut collector = BuildDataCollector::new(config.wrap_rustc); ws.collect_build_data_configs(&mut collector); Some(collector.collect(progress)?) } else { @@ -136,8 +137,11 @@ mod tests { fn test_loading_rust_analyzer() -> Result<()> { let path = Path::new(env!("CARGO_MANIFEST_DIR")).parent().unwrap().parent().unwrap(); let cargo_config = Default::default(); - let load_cargo_config = - LoadCargoConfig { load_out_dirs_from_check: false, with_proc_macro: false }; + let load_cargo_config = LoadCargoConfig { + load_out_dirs_from_check: false, + wrap_rustc: false, + with_proc_macro: false, + }; let (host, _vfs, _proc_macro) = load_workspace_at(path, &cargo_config, &load_cargo_config, &|_| {})?; diff --git a/crates/rust-analyzer/src/cli/ssr.rs b/crates/rust-analyzer/src/cli/ssr.rs index 79f426fff15..1fd9b5a9b47 100644 --- a/crates/rust-analyzer/src/cli/ssr.rs +++ b/crates/rust-analyzer/src/cli/ssr.rs @@ -9,8 +9,11 @@ use ide_ssr::{MatchFinder, SsrPattern, SsrRule}; pub fn apply_ssr_rules(rules: Vec<SsrRule>) -> Result<()> { use ide_db::base_db::SourceDatabaseExt; let cargo_config = Default::default(); - let load_cargo_config = - LoadCargoConfig { load_out_dirs_from_check: true, with_proc_macro: true }; + let load_cargo_config = LoadCargoConfig { + load_out_dirs_from_check: true, + wrap_rustc: false, + with_proc_macro: true, + }; let (host, vfs, _proc_macro) = load_workspace_at(&std::env::current_dir()?, &cargo_config, &load_cargo_config, &|_| {})?; let db = host.raw_database(); @@ -37,7 +40,7 @@ pub fn search_for_patterns(patterns: Vec<SsrPattern>, debug_snippet: Option<Stri use ide_db::symbol_index::SymbolsDatabase; let cargo_config = Default::default(); let load_cargo_config = - LoadCargoConfig { load_out_dirs_from_check: true, with_proc_macro: true }; + LoadCargoConfig { load_out_dirs_from_check: true, wrap_rustc: true, with_proc_macro: true }; let (host, _vfs, _proc_macro) = load_workspace_at(&std::env::current_dir()?, &cargo_config, &load_cargo_config, &|_| {})?; let db = host.raw_database(); |
