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.rs8
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)
}