Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-def/src/lib.rs')
| -rw-r--r-- | crates/hir-def/src/lib.rs | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/crates/hir-def/src/lib.rs b/crates/hir-def/src/lib.rs index a1bb82e7f2..2172e2412b 100644 --- a/crates/hir-def/src/lib.rs +++ b/crates/hir-def/src/lib.rs @@ -1017,6 +1017,14 @@ pub enum VariantId { impl_from!(EnumVariantId, StructId, UnionId for VariantId); impl VariantId { + pub fn from_non_enum(adt_id: AdtId) -> Option<Self> { + Some(match adt_id { + AdtId::StructId(struct_id) => struct_id.into(), + AdtId::UnionId(union_id) => union_id.into(), + AdtId::EnumId(_) => return None, + }) + } + pub fn fields(self, db: &dyn DefDatabase) -> &VariantFields { VariantFields::of(db, self) } |