Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide/src/navigation_target.rs')
| -rw-r--r-- | crates/ide/src/navigation_target.rs | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/crates/ide/src/navigation_target.rs b/crates/ide/src/navigation_target.rs index d8ce79de37..65c37ca68c 100644 --- a/crates/ide/src/navigation_target.rs +++ b/crates/ide/src/navigation_target.rs @@ -45,6 +45,9 @@ pub struct NavigationTarget { pub container_name: Option<SmolStr>, pub description: Option<String>, pub docs: Option<Documentation>, + /// In addition to a `name` field, a `NavigationTarget` may also be aliased + /// In such cases we want a `NavigationTarget` to be accessible by its alias + pub alias: Option<SmolStr>, } impl fmt::Debug for NavigationTarget { @@ -154,6 +157,7 @@ impl NavigationTarget { container_name: None, description: None, docs: None, + alias: None, } } } @@ -165,7 +169,8 @@ impl TryToNav for FileSymbol { Some(NavigationTarget { file_id: full_range.file_id, - name: self.name.clone(), + name: self.def.name(db)?.to_smol_str(), + alias: if self.is_alias { Some(self.name.clone()) } else { None }, kind: Some(hir::ModuleDefId::from(self.def).into()), full_range: full_range.range, focus_range: Some(name_range.range), @@ -466,6 +471,7 @@ impl ToNav for LocalSource { NavigationTarget { file_id, name, + alias: None, kind: Some(kind), full_range, focus_range, @@ -494,6 +500,7 @@ impl ToNav for hir::Label { NavigationTarget { file_id, name, + alias: None, kind: Some(SymbolKind::Label), full_range, focus_range, @@ -534,6 +541,7 @@ impl TryToNav for hir::TypeParam { Some(NavigationTarget { file_id, name, + alias: None, kind: Some(SymbolKind::TypeParam), full_range, focus_range, @@ -560,6 +568,7 @@ impl TryToNav for hir::LifetimeParam { Some(NavigationTarget { file_id, name, + alias: None, kind: Some(SymbolKind::LifetimeParam), full_range, focus_range: Some(full_range), @@ -589,6 +598,7 @@ impl TryToNav for hir::ConstParam { Some(NavigationTarget { file_id, name, + alias: None, kind: Some(SymbolKind::ConstParam), full_range, focus_range, @@ -643,6 +653,7 @@ fn foo() { enum FooInner { } } focus_range: 34..42, name: "FooInner", kind: Enum, + container_name: "foo", description: "enum FooInner", }, ] |