aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/adt.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir/src/adt.rs')
-rw-r--r--crates/ra_hir/src/adt.rs22
1 files changed, 1 insertions, 21 deletions
diff --git a/crates/ra_hir/src/adt.rs b/crates/ra_hir/src/adt.rs
index 728046b0d..56f2b7aa3 100644
--- a/crates/ra_hir/src/adt.rs
+++ b/crates/ra_hir/src/adt.rs
@@ -9,29 +9,9 @@ use ra_syntax::ast::{self, NameOwner, StructKind, TypeAscriptionOwner};
9use crate::{ 9use crate::{
10 db::{AstDatabase, DefDatabase, HirDatabase}, 10 db::{AstDatabase, DefDatabase, HirDatabase},
11 type_ref::TypeRef, 11 type_ref::TypeRef,
12 AsName, Crate, Enum, EnumVariant, FieldSource, HasSource, Name, Source, Struct, StructField, 12 AsName, Enum, EnumVariant, FieldSource, HasSource, Name, Source, Struct, StructField,
13 Union,
14}; 13};
15 14
16#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
17pub enum AdtDef {
18 Struct(Struct),
19 Union(Union),
20 Enum(Enum),
21}
22impl_froms!(AdtDef: Struct, Union, Enum);
23
24impl AdtDef {
25 pub(crate) fn krate(self, db: &impl HirDatabase) -> Option<Crate> {
26 match self {
27 AdtDef::Struct(s) => s.module(db),
28 AdtDef::Union(s) => s.module(db),
29 AdtDef::Enum(e) => e.module(db),
30 }
31 .krate(db)
32 }
33}
34
35impl Struct { 15impl Struct {
36 pub(crate) fn variant_data(self, db: &impl DefDatabase) -> Arc<VariantData> { 16 pub(crate) fn variant_data(self, db: &impl DefDatabase) -> Arc<VariantData> {
37 db.struct_data(self).variant_data.clone() 17 db.struct_data(self).variant_data.clone()