aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/adt.rs
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2019-01-24 22:53:07 +0000
committerAleksey Kladov <[email protected]>2019-01-24 22:53:07 +0000
commit31d3a56b1865c33ef54e5d76e606965c87676695 (patch)
tree546b8d866e0fb9f82c49ab3cc416c103112c7e24 /crates/ra_hir/src/adt.rs
parenta03c109f50a01d646cd2e63c190b0bb08760dcd8 (diff)
move adt to adt
Diffstat (limited to 'crates/ra_hir/src/adt.rs')
-rw-r--r--crates/ra_hir/src/adt.rs23
1 files changed, 19 insertions, 4 deletions
diff --git a/crates/ra_hir/src/adt.rs b/crates/ra_hir/src/adt.rs
index ad3f9c405..6b13b464d 100644
--- a/crates/ra_hir/src/adt.rs
+++ b/crates/ra_hir/src/adt.rs
@@ -3,17 +3,32 @@
3 3
4use std::sync::Arc; 4use std::sync::Arc;
5 5
6use ra_syntax::{ 6use ra_syntax::ast::{self, NameOwner, StructFlavor};
7 ast::{self, NameOwner, StructFlavor}
8};
9 7
10use crate::{ 8use crate::{
11 Name, AsName, Struct, Enum, EnumVariant, 9 Name, AsName, Struct, Enum, EnumVariant, Crate,
12 HirDatabase, 10 HirDatabase,
13 type_ref::TypeRef, 11 type_ref::TypeRef,
14 ids::LocationCtx, 12 ids::LocationCtx,
15}; 13};
16 14
15#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
16pub enum AdtDef {
17 Struct(Struct),
18 Enum(Enum),
19}
20impl_froms!(AdtDef: Struct, Enum);
21
22impl AdtDef {
23 pub(crate) fn krate(self, db: &impl HirDatabase) -> Option<Crate> {
24 match self {
25 AdtDef::Struct(s) => s.module(db),
26 AdtDef::Enum(e) => e.module(db),
27 }
28 .krate(db)
29 }
30}
31
17impl Struct { 32impl Struct {
18 pub(crate) fn variant_data(&self, db: &impl HirDatabase) -> Arc<VariantData> { 33 pub(crate) fn variant_data(&self, db: &impl HirDatabase) -> Arc<VariantData> {
19 db.struct_data((*self).into()).variant_data.clone() 34 db.struct_data((*self).into()).variant_data.clone()