Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide_db/src/defs.rs')
| -rw-r--r-- | crates/ide_db/src/defs.rs | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/crates/ide_db/src/defs.rs b/crates/ide_db/src/defs.rs index 5fdbb60081..1d7f4392dd 100644 --- a/crates/ide_db/src/defs.rs +++ b/crates/ide_db/src/defs.rs @@ -516,6 +516,18 @@ impl NameRefClass { } } +impl_from!( + Field, Module, Function, Adt, Variant, Const, Static, Trait, TypeAlias, BuiltinType, Local, + GenericParam, Label + for Definition +); + +impl From<Impl> for Definition { + fn from(impl_: Impl) -> Self { + Definition::SelfType(impl_) + } +} + impl AsAssocItem for Definition { fn as_assoc_item(self, db: &dyn hir::db::HirDatabase) -> Option<AssocItem> { match self { @@ -527,11 +539,15 @@ impl AsAssocItem for Definition { } } -impl_from!( - Field, Module, Function, Adt, Variant, Const, Static, Trait, TypeAlias, BuiltinType, Local, - GenericParam, Label - for Definition -); +impl From<AssocItem> for Definition { + fn from(assoc_item: AssocItem) -> Self { + match assoc_item { + AssocItem::Function(it) => Definition::Function(it), + AssocItem::Const(it) => Definition::Const(it), + AssocItem::TypeAlias(it) => Definition::TypeAlias(it), + } + } +} impl From<PathResolution> for Definition { fn from(path_resolution: PathResolution) -> Self { |