diff options
Diffstat (limited to 'crates/ra_hir/src/adt.rs')
-rw-r--r-- | crates/ra_hir/src/adt.rs | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/crates/ra_hir/src/adt.rs b/crates/ra_hir/src/adt.rs index 8afdac801..c65446df4 100644 --- a/crates/ra_hir/src/adt.rs +++ b/crates/ra_hir/src/adt.rs | |||
@@ -4,10 +4,7 @@ | |||
4 | use std::sync::Arc; | 4 | use std::sync::Arc; |
5 | 5 | ||
6 | use ra_arena::{impl_arena_id, Arena, RawId}; | 6 | use ra_arena::{impl_arena_id, Arena, RawId}; |
7 | use ra_syntax::{ | 7 | use ra_syntax::ast::{self, NameOwner, StructKind, TypeAscriptionOwner}; |
8 | ast::{self, NameOwner, StructKind, TypeAscriptionOwner}, | ||
9 | TreeArc, | ||
10 | }; | ||
11 | 8 | ||
12 | use crate::{ | 9 | use crate::{ |
13 | type_ref::TypeRef, AsName, AstDatabase, Crate, DefDatabase, Enum, EnumVariant, FieldSource, | 10 | type_ref::TypeRef, AsName, AstDatabase, Crate, DefDatabase, Enum, EnumVariant, FieldSource, |
@@ -59,11 +56,11 @@ impl StructData { | |||
59 | struct_: Struct, | 56 | struct_: Struct, |
60 | ) -> Arc<StructData> { | 57 | ) -> Arc<StructData> { |
61 | let src = struct_.source(db); | 58 | let src = struct_.source(db); |
62 | Arc::new(StructData::new(&*src.ast)) | 59 | Arc::new(StructData::new(&src.ast)) |
63 | } | 60 | } |
64 | } | 61 | } |
65 | 62 | ||
66 | fn variants(enum_def: &ast::EnumDef) -> impl Iterator<Item = &ast::EnumVariant> { | 63 | fn variants(enum_def: &ast::EnumDef) -> impl Iterator<Item = ast::EnumVariant> { |
67 | enum_def.variant_list().into_iter().flat_map(|it| it.variants()) | 64 | enum_def.variant_list().into_iter().flat_map(|it| it.variants()) |
68 | } | 65 | } |
69 | 66 | ||
@@ -71,9 +68,9 @@ impl EnumVariant { | |||
71 | pub(crate) fn source_impl( | 68 | pub(crate) fn source_impl( |
72 | self, | 69 | self, |
73 | db: &(impl DefDatabase + AstDatabase), | 70 | db: &(impl DefDatabase + AstDatabase), |
74 | ) -> Source<TreeArc<ast::EnumVariant>> { | 71 | ) -> Source<ast::EnumVariant> { |
75 | let src = self.parent.source(db); | 72 | let src = self.parent.source(db); |
76 | let ast = variants(&*src.ast) | 73 | let ast = variants(&src.ast) |
77 | .zip(db.enum_data(self.parent).variants.iter()) | 74 | .zip(db.enum_data(self.parent).variants.iter()) |
78 | .find(|(_syntax, (id, _))| *id == self.id) | 75 | .find(|(_syntax, (id, _))| *id == self.id) |
79 | .unwrap() | 76 | .unwrap() |
@@ -96,7 +93,7 @@ impl EnumData { | |||
96 | pub(crate) fn enum_data_query(db: &(impl DefDatabase + AstDatabase), e: Enum) -> Arc<EnumData> { | 93 | pub(crate) fn enum_data_query(db: &(impl DefDatabase + AstDatabase), e: Enum) -> Arc<EnumData> { |
97 | let src = e.source(db); | 94 | let src = e.source(db); |
98 | let name = src.ast.name().map(|n| n.as_name()); | 95 | let name = src.ast.name().map(|n| n.as_name()); |
99 | let variants = variants(&*src.ast) | 96 | let variants = variants(&src.ast) |
100 | .map(|var| EnumVariantData { | 97 | .map(|var| EnumVariantData { |
101 | name: var.name().map(|it| it.as_name()), | 98 | name: var.name().map(|it| it.as_name()), |
102 | variant_data: Arc::new(VariantData::new(var.kind())), | 99 | variant_data: Arc::new(VariantData::new(var.kind())), |