diff options
Diffstat (limited to 'crates/ra_hir/src/adt.rs')
-rw-r--r-- | crates/ra_hir/src/adt.rs | 22 |
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}; | |||
9 | use crate::{ | 9 | use 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)] | ||
17 | pub enum AdtDef { | ||
18 | Struct(Struct), | ||
19 | Union(Union), | ||
20 | Enum(Enum), | ||
21 | } | ||
22 | impl_froms!(AdtDef: Struct, Union, Enum); | ||
23 | |||
24 | impl 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 | |||
35 | impl Struct { | 15 | impl 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() |