diff options
Diffstat (limited to 'crates/ra_hir_def/src/adt.rs')
-rw-r--r-- | crates/ra_hir_def/src/adt.rs | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/crates/ra_hir_def/src/adt.rs b/crates/ra_hir_def/src/adt.rs index ef2b20f1e..ec3d57d1a 100644 --- a/crates/ra_hir_def/src/adt.rs +++ b/crates/ra_hir_def/src/adt.rs | |||
@@ -11,9 +11,8 @@ use ra_arena::{map::ArenaMap, Arena}; | |||
11 | use ra_syntax::ast::{self, NameOwner, TypeAscriptionOwner}; | 11 | use ra_syntax::ast::{self, NameOwner, TypeAscriptionOwner}; |
12 | 12 | ||
13 | use crate::{ | 13 | use crate::{ |
14 | db::DefDatabase, src::HasChildSource, src::HasSource, trace::Trace, type_ref::TypeRef, | 14 | db::DefDatabase, src::HasChildSource, src::HasSource, trace::Trace, type_ref::TypeRef, EnumId, |
15 | AstItemDef, EnumId, LocalEnumVariantId, LocalStructFieldId, Lookup, StructId, UnionId, | 15 | LocalEnumVariantId, LocalStructFieldId, Lookup, StructId, UnionId, VariantId, |
16 | VariantId, | ||
17 | }; | 16 | }; |
18 | 17 | ||
19 | /// Note that we use `StructData` for unions as well! | 18 | /// Note that we use `StructData` for unions as well! |
@@ -58,7 +57,7 @@ impl StructData { | |||
58 | Arc::new(StructData { name, variant_data }) | 57 | Arc::new(StructData { name, variant_data }) |
59 | } | 58 | } |
60 | pub(crate) fn union_data_query(db: &impl DefDatabase, id: UnionId) -> Arc<StructData> { | 59 | pub(crate) fn union_data_query(db: &impl DefDatabase, id: UnionId) -> Arc<StructData> { |
61 | let src = id.source(db); | 60 | let src = id.lookup(db).source(db); |
62 | let name = src.value.name().map_or_else(Name::missing, |n| n.as_name()); | 61 | let name = src.value.name().map_or_else(Name::missing, |n| n.as_name()); |
63 | let variant_data = VariantData::new( | 62 | let variant_data = VariantData::new( |
64 | src.value | 63 | src.value |
@@ -73,7 +72,7 @@ impl StructData { | |||
73 | 72 | ||
74 | impl EnumData { | 73 | impl EnumData { |
75 | pub(crate) fn enum_data_query(db: &impl DefDatabase, e: EnumId) -> Arc<EnumData> { | 74 | pub(crate) fn enum_data_query(db: &impl DefDatabase, e: EnumId) -> Arc<EnumData> { |
76 | let src = e.source(db); | 75 | let src = e.lookup(db).source(db); |
77 | let name = src.value.name().map_or_else(Name::missing, |n| n.as_name()); | 76 | let name = src.value.name().map_or_else(Name::missing, |n| n.as_name()); |
78 | let mut trace = Trace::new_for_arena(); | 77 | let mut trace = Trace::new_for_arena(); |
79 | lower_enum(&mut trace, &src.value); | 78 | lower_enum(&mut trace, &src.value); |
@@ -90,7 +89,7 @@ impl HasChildSource for EnumId { | |||
90 | type ChildId = LocalEnumVariantId; | 89 | type ChildId = LocalEnumVariantId; |
91 | type Value = ast::EnumVariant; | 90 | type Value = ast::EnumVariant; |
92 | fn child_source(&self, db: &impl DefDatabase) -> InFile<ArenaMap<Self::ChildId, Self::Value>> { | 91 | fn child_source(&self, db: &impl DefDatabase) -> InFile<ArenaMap<Self::ChildId, Self::Value>> { |
93 | let src = self.source(db); | 92 | let src = self.lookup(db).source(db); |
94 | let mut trace = Trace::new_for_map(); | 93 | let mut trace = Trace::new_for_map(); |
95 | lower_enum(&mut trace, &src.value); | 94 | lower_enum(&mut trace, &src.value); |
96 | src.with_value(trace.into_map()) | 95 | src.with_value(trace.into_map()) |
@@ -155,7 +154,7 @@ impl HasChildSource for VariantId { | |||
155 | src.map(|map| map[it.local_id].kind()) | 154 | src.map(|map| map[it.local_id].kind()) |
156 | } | 155 | } |
157 | VariantId::StructId(it) => it.lookup(db).source(db).map(|it| it.kind()), | 156 | VariantId::StructId(it) => it.lookup(db).source(db).map(|it| it.kind()), |
158 | VariantId::UnionId(it) => it.source(db).map(|it| { | 157 | VariantId::UnionId(it) => it.lookup(db).source(db).map(|it| { |
159 | it.record_field_def_list() | 158 | it.record_field_def_list() |
160 | .map(ast::StructKind::Record) | 159 | .map(ast::StructKind::Record) |
161 | .unwrap_or(ast::StructKind::Unit) | 160 | .unwrap_or(ast::StructKind::Unit) |