feat: avoid checking the whole project during initial loading
This commit is contained in:
@@ -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) =
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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, &|_| {})?;
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user