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.rs7
1 files changed, 5 insertions, 2 deletions
diff --git a/crates/ra_hir/src/adt.rs b/crates/ra_hir/src/adt.rs
index e027eedd9..5e5905f15 100644
--- a/crates/ra_hir/src/adt.rs
+++ b/crates/ra_hir/src/adt.rs
@@ -10,7 +10,7 @@ use ra_syntax::{
10}; 10};
11 11
12use crate::{ 12use crate::{
13 Name, AsName, Struct, Enum, EnumVariant, Crate, 13 Name, AsName, Struct, Union, Enum, EnumVariant, Crate,
14 HirDatabase, HirFileId, StructField, FieldSource, 14 HirDatabase, HirFileId, StructField, FieldSource,
15 type_ref::TypeRef, DefDatabase, 15 type_ref::TypeRef, DefDatabase,
16}; 16};
@@ -18,14 +18,16 @@ use crate::{
18#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] 18#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
19pub enum AdtDef { 19pub enum AdtDef {
20 Struct(Struct), 20 Struct(Struct),
21 Union(Union),
21 Enum(Enum), 22 Enum(Enum),
22} 23}
23impl_froms!(AdtDef: Struct, Enum); 24impl_froms!(AdtDef: Struct, Union, Enum);
24 25
25impl AdtDef { 26impl AdtDef {
26 pub(crate) fn krate(self, db: &impl HirDatabase) -> Option<Crate> { 27 pub(crate) fn krate(self, db: &impl HirDatabase) -> Option<Crate> {
27 match self { 28 match self {
28 AdtDef::Struct(s) => s.module(db), 29 AdtDef::Struct(s) => s.module(db),
30 AdtDef::Union(s) => s.module(db),
29 AdtDef::Enum(e) => e.module(db), 31 AdtDef::Enum(e) => e.module(db),
30 } 32 }
31 .krate(db) 33 .krate(db)
@@ -38,6 +40,7 @@ impl Struct {
38 } 40 }
39} 41}
40 42
43/// Note that we use `StructData` for unions as well!
41#[derive(Debug, Clone, PartialEq, Eq)] 44#[derive(Debug, Clone, PartialEq, Eq)]
42pub struct StructData { 45pub struct StructData {
43 pub(crate) name: Option<Name>, 46 pub(crate) name: Option<Name>,