Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir/src/has_source.rs')
-rw-r--r--crates/hir/src/has_source.rs12
1 files changed, 11 insertions, 1 deletions
diff --git a/crates/hir/src/has_source.rs b/crates/hir/src/has_source.rs
index a34b498083..372c725293 100644
--- a/crates/hir/src/has_source.rs
+++ b/crates/hir/src/has_source.rs
@@ -15,7 +15,7 @@ use tt::TextRange;
use crate::{
db::HirDatabase, Adt, Callee, Const, Enum, ExternCrateDecl, Field, FieldSource, Function, Impl,
InlineAsmOperand, Label, LifetimeParam, LocalSource, Macro, Module, Param, SelfParam, Static,
- Struct, Trait, TraitAlias, TypeAlias, TypeOrConstParam, Union, Variant,
+ Struct, Trait, TraitAlias, TypeAlias, TypeOrConstParam, Union, Variant, VariantDef,
};
pub trait HasSource {
@@ -110,6 +110,16 @@ impl HasSource for Adt {
}
}
}
+impl HasSource for VariantDef {
+ type Ast = ast::VariantDef;
+ fn source(self, db: &dyn HirDatabase) -> Option<InFile<Self::Ast>> {
+ match self {
+ VariantDef::Struct(s) => Some(s.source(db)?.map(ast::VariantDef::Struct)),
+ VariantDef::Union(u) => Some(u.source(db)?.map(ast::VariantDef::Union)),
+ VariantDef::Variant(v) => Some(v.source(db)?.map(ast::VariantDef::Variant)),
+ }
+ }
+}
impl HasSource for Struct {
type Ast = ast::Struct;
fn source(self, db: &dyn HirDatabase) -> Option<InFile<Self::Ast>> {