Unnamed repository; edit this file 'description' to name the repository.
Auto merge of #15445 - Veykril:worl-symbols-traits, r=Veykril
fix: Fix `only_types` config filtering out traits from world symbols It is a bit confusing that this apparently did not filter every trait out though... Closes https://github.com/rust-lang/rust-analyzer/issues/15444 Closes https://github.com/rust-lang/rust-analyzer/issues/15200
bors 2023-08-12
parent 39ebc37 · parent d6d188f · commit 6cf06c1
-rw-r--r--crates/ide-db/src/symbol_index.rs2
-rw-r--r--crates/ide/src/navigation_target.rs8
2 files changed, 8 insertions, 2 deletions
diff --git a/crates/ide-db/src/symbol_index.rs b/crates/ide-db/src/symbol_index.rs
index b54c43b296..ad1ce453ec 100644
--- a/crates/ide-db/src/symbol_index.rs
+++ b/crates/ide-db/src/symbol_index.rs
@@ -323,6 +323,8 @@ impl Query {
hir::ModuleDef::Adt(..)
| hir::ModuleDef::TypeAlias(..)
| hir::ModuleDef::BuiltinType(..)
+ | hir::ModuleDef::TraitAlias(..)
+ | hir::ModuleDef::Trait(..)
)
{
continue;
diff --git a/crates/ide/src/navigation_target.rs b/crates/ide/src/navigation_target.rs
index d1479dd1e5..0740bfbc7b 100644
--- a/crates/ide/src/navigation_target.rs
+++ b/crates/ide/src/navigation_target.rs
@@ -175,8 +175,12 @@ impl TryToNav for FileSymbol {
Some(NavigationTarget {
file_id: full_range.file_id,
- name: if self.is_alias { self.def.name(db)?.to_smol_str() } else { self.name.clone() },
- alias: if self.is_alias { Some(self.name.clone()) } else { None },
+ name: self
+ .is_alias
+ .then(|| self.def.name(db))
+ .flatten()
+ .map_or_else(|| self.name.clone(), |it| it.to_smol_str()),
+ alias: self.is_alias.then(|| self.name.clone()),
kind: Some(hir::ModuleDefId::from(self.def).into()),
full_range: full_range.range,
focus_range,