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.rs21
1 files changed, 16 insertions, 5 deletions
diff --git a/crates/ide-db/src/defs.rs b/crates/ide-db/src/defs.rs
index 788f9b73fa..6ee4c97c87 100644
--- a/crates/ide-db/src/defs.rs
+++ b/crates/ide-db/src/defs.rs
@@ -14,11 +14,12 @@ use arrayvec::ArrayVec;
use either::Either;
use hir::{
Adt, AsAssocItem, AsExternAssocItem, AssocItem, AttributeTemplate, BuiltinAttr, BuiltinType,
- Const, Crate, DefWithBody, DeriveHelper, DisplayTarget, DocLinkDef, ExternAssocItem,
- ExternCrateDecl, Field, Function, GenericDef, GenericParam, GenericSubstitution, HasContainer,
- HasVisibility, HirDisplay, Impl, InlineAsmOperand, ItemContainer, Label, Local, Macro, Module,
- ModuleDef, Name, PathResolution, Semantics, Static, StaticLifetime, Struct, ToolModule, Trait,
- TupleField, TypeAlias, Variant, VariantDef, Visibility,
+ Const, Crate, DefWithBody, DeriveHelper, DisplayTarget, DocLinkDef, ExpressionStoreOwner,
+ ExternAssocItem, ExternCrateDecl, Field, Function, GenericDef, GenericParam,
+ GenericSubstitution, HasContainer, HasVisibility, HirDisplay, Impl, InlineAsmOperand,
+ ItemContainer, Label, Local, Macro, Module, ModuleDef, Name, PathResolution, Semantics, Static,
+ StaticLifetime, Struct, ToolModule, Trait, TupleField, TypeAlias, Variant, VariantDef,
+ Visibility,
};
use span::Edition;
use stdx::{format_to, impl_from};
@@ -1020,6 +1021,16 @@ impl From<GenericDef> for Definition {
}
}
+impl TryFrom<ExpressionStoreOwner> for Definition {
+ type Error = ();
+ fn try_from(def: ExpressionStoreOwner) -> Result<Self, Self::Error> {
+ match def {
+ ExpressionStoreOwner::Body(def_with_body) => def_with_body.try_into(),
+ ExpressionStoreOwner::Signature(generic_def) => Ok(generic_def.into()),
+ }
+ }
+}
+
impl TryFrom<Definition> for GenericDef {
type Error = ();
fn try_from(def: Definition) -> Result<Self, Self::Error> {