Unnamed repository; edit this file 'description' to name the repository.
fix: Do not show sysroot dependencies in symbol search
Lukas Wirth 3 months ago
parent 6705e57 · commit fcdcf05
-rw-r--r--crates/base-db/src/input.rs3
-rw-r--r--crates/ide-db/src/symbol_index.rs8
-rw-r--r--crates/project-model/src/workspace.rs6
3 files changed, 14 insertions, 3 deletions
diff --git a/crates/base-db/src/input.rs b/crates/base-db/src/input.rs
index 240f126491..94793a3618 100644
--- a/crates/base-db/src/input.rs
+++ b/crates/base-db/src/input.rs
@@ -221,6 +221,7 @@ pub enum LangCrateOrigin {
ProcMacro,
Std,
Test,
+ Dependency,
Other,
}
@@ -245,7 +246,7 @@ impl fmt::Display for LangCrateOrigin {
LangCrateOrigin::ProcMacro => "proc_macro",
LangCrateOrigin::Std => "std",
LangCrateOrigin::Test => "test",
- LangCrateOrigin::Other => "other",
+ LangCrateOrigin::Other | LangCrateOrigin::Dependency => "other",
};
f.write_str(text)
}
diff --git a/crates/ide-db/src/symbol_index.rs b/crates/ide-db/src/symbol_index.rs
index d7f4c66f46..183f6b6495 100644
--- a/crates/ide-db/src/symbol_index.rs
+++ b/crates/ide-db/src/symbol_index.rs
@@ -27,7 +27,7 @@ use std::{
ops::ControlFlow,
};
-use base_db::{LibraryRoots, LocalRoots, RootQueryDb, SourceRootId};
+use base_db::{CrateOrigin, LangCrateOrigin, LibraryRoots, LocalRoots, RootQueryDb, SourceRootId};
use fst::{Automaton, Streamer, raw::IndexedValue};
use hir::{
Crate, Module,
@@ -446,6 +446,12 @@ impl<'db> SymbolIndex<'db> {
{
continue;
}
+ if let CrateOrigin::Lang(LangCrateOrigin::Dependency | LangCrateOrigin::Other) =
+ krate.origin(db)
+ {
+ // don't show dependencies of the sysroot
+ continue;
+ }
collector.push_crate_root(krate);
}
diff --git a/crates/project-model/src/workspace.rs b/crates/project-model/src/workspace.rs
index fa3a79e041..8f15f7e150 100644
--- a/crates/project-model/src/workspace.rs
+++ b/crates/project-model/src/workspace.rs
@@ -1161,6 +1161,8 @@ fn project_json_to_crate_graph(
name: Some(name.canonical_name().to_owned()),
}
}
+ } else if is_sysroot {
+ CrateOrigin::Lang(LangCrateOrigin::Dependency)
} else {
CrateOrigin::Local { repo: None, name: None }
},
@@ -1294,6 +1296,8 @@ fn cargo_to_crate_graph(
name: Some(Symbol::intern(&pkg_data.name)),
}
}
+ } else if cargo.is_sysroot() {
+ CrateOrigin::Lang(LangCrateOrigin::Dependency)
} else {
CrateOrigin::Library {
repo: pkg_data.repository.clone(),
@@ -1717,7 +1721,7 @@ fn extend_crate_graph_with_sysroot(
!matches!(lang_crate, LangCrateOrigin::Test | LangCrateOrigin::Alloc),
)),
LangCrateOrigin::ProcMacro => libproc_macro = Some(cid),
- LangCrateOrigin::Other => (),
+ LangCrateOrigin::Other | LangCrateOrigin::Dependency => (),
}
}
}