about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLukas Wirth <lukastw97@gmail.com>2023-08-12 06:32:23 +0200
committerLukas Wirth <lukastw97@gmail.com>2023-08-12 06:40:49 +0200
commitd6d188fce2f2dec3b6d290477c7727b420b0c320 (patch)
treeccfbe77805680de4896fe8433fe06732855c4708
parent1b678231d71f48f078e1a80230c28a2fce2daec5 (diff)
downloadrust-d6d188fce2f2dec3b6d290477c7727b420b0c320.tar.gz
rust-d6d188fce2f2dec3b6d290477c7727b420b0c320.zip
fix: Fix `only_types` config filtering out traits from world symbols
-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 b54c43b296b..ad1ce453eca 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 d1479dd1e58..0740bfbc7b1 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,