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.rs16
1 files changed, 13 insertions, 3 deletions
diff --git a/crates/ide/src/navigation_target.rs b/crates/ide/src/navigation_target.rs
index 9259243db8..d9f80cb53d 100644
--- a/crates/ide/src/navigation_target.rs
+++ b/crates/ide/src/navigation_target.rs
@@ -44,13 +44,16 @@ pub struct NavigationTarget {
///
/// This range must be contained within [`Self::full_range`].
pub focus_range: Option<TextRange>,
+ // FIXME: Symbol
pub name: SmolStr,
pub kind: Option<SymbolKind>,
+ // FIXME: Symbol
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
+ // FIXME: Symbol
pub alias: Option<SmolStr>,
}
@@ -191,11 +194,11 @@ impl TryToNav for FileSymbol {
NavigationTarget {
file_id,
name: self.is_alias.then(|| self.def.name(db)).flatten().map_or_else(
- || self.name.clone(),
+ || self.name.as_str().into(),
|it| it.display_no_db(edition).to_smolstr(),
),
- alias: self.is_alias.then(|| self.name.clone()),
- kind: Some(hir::ModuleDefId::from(self.def).into()),
+ alias: self.is_alias.then(|| self.name.as_str().into()),
+ kind: Some(self.def.into()),
full_range,
focus_range,
container_name: self.container_name.clone(),
@@ -225,6 +228,7 @@ impl TryToNav for Definition {
Definition::Local(it) => Some(it.to_nav(db)),
Definition::Label(it) => it.try_to_nav(db),
Definition::Module(it) => Some(it.to_nav(db)),
+ Definition::Crate(it) => Some(it.to_nav(db)),
Definition::Macro(it) => it.try_to_nav(db),
Definition::Field(it) => it.try_to_nav(db),
Definition::SelfType(it) => it.try_to_nav(db),
@@ -398,6 +402,12 @@ impl ToNav for hir::Module {
}
}
+impl ToNav for hir::Crate {
+ fn to_nav(&self, db: &RootDatabase) -> UpmappingResult<NavigationTarget> {
+ self.root_module().to_nav(db)
+ }
+}
+
impl TryToNav for hir::Impl {
fn try_to_nav(&self, db: &RootDatabase) -> Option<UpmappingResult<NavigationTarget>> {
let InFile { file_id, value } = self.source(db)?;