aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir_def/src/adt.rs
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2020-03-19 17:47:43 +0000
committerGitHub <[email protected]>2020-03-19 17:47:43 +0000
commit1ba03c6995015b3143a417ed07437f0c9028a97d (patch)
treece3eb047dd9fe9005750a3b1417d95b1aa8fe01e /crates/ra_hir_def/src/adt.rs
parent988f1dda6bde576ec2457dd97a7525014609c771 (diff)
parentf840fcb2f525c13809d6a736e434155edf075a06 (diff)
Merge #3656
3656: Simplify arenas r=matklad a=matklad At the moment, Arena is paranetrized by two types: index and data. The original motivation was to allow index to be defined in the downstream crate, so that you can add inherent impls to the index. However, it seems like we've never actually used that capability, so perhaps we should switch to a generic Index impl? This PR tries this out, switching only `raw.rs` and parts of `hir_def`. wdyt? Co-authored-by: Aleksey Kladov <[email protected]>
Diffstat (limited to 'crates/ra_hir_def/src/adt.rs')
-rw-r--r--crates/ra_hir_def/src/adt.rs18
1 files changed, 7 insertions, 11 deletions
diff --git a/crates/ra_hir_def/src/adt.rs b/crates/ra_hir_def/src/adt.rs
index d55c49938..de07fc952 100644
--- a/crates/ra_hir_def/src/adt.rs
+++ b/crates/ra_hir_def/src/adt.rs
@@ -27,7 +27,7 @@ pub struct StructData {
27#[derive(Debug, Clone, PartialEq, Eq)] 27#[derive(Debug, Clone, PartialEq, Eq)]
28pub struct EnumData { 28pub struct EnumData {
29 pub name: Name, 29 pub name: Name,
30 pub variants: Arena<LocalEnumVariantId, EnumVariantData>, 30 pub variants: Arena<EnumVariantData>,
31} 31}
32 32
33#[derive(Debug, Clone, PartialEq, Eq)] 33#[derive(Debug, Clone, PartialEq, Eq)]
@@ -38,8 +38,8 @@ pub struct EnumVariantData {
38 38
39#[derive(Debug, Clone, PartialEq, Eq)] 39#[derive(Debug, Clone, PartialEq, Eq)]
40pub enum VariantData { 40pub enum VariantData {
41 Record(Arena<LocalStructFieldId, StructFieldData>), 41 Record(Arena<StructFieldData>),
42 Tuple(Arena<LocalStructFieldId, StructFieldData>), 42 Tuple(Arena<StructFieldData>),
43 Unit, 43 Unit,
44} 44}
45 45
@@ -104,7 +104,7 @@ impl HasChildSource for EnumId {
104 104
105fn lower_enum( 105fn lower_enum(
106 db: &dyn DefDatabase, 106 db: &dyn DefDatabase,
107 trace: &mut Trace<LocalEnumVariantId, EnumVariantData, ast::EnumVariant>, 107 trace: &mut Trace<EnumVariantData, ast::EnumVariant>,
108 ast: &InFile<ast::EnumDef>, 108 ast: &InFile<ast::EnumDef>,
109) { 109) {
110 for var in ast.value.variant_list().into_iter().flat_map(|it| it.variants()) { 110 for var in ast.value.variant_list().into_iter().flat_map(|it| it.variants()) {
@@ -128,8 +128,8 @@ impl VariantData {
128 } 128 }
129 } 129 }
130 130
131 pub fn fields(&self) -> &Arena<LocalStructFieldId, StructFieldData> { 131 pub fn fields(&self) -> &Arena<StructFieldData> {
132 const EMPTY: &Arena<LocalStructFieldId, StructFieldData> = &Arena::new(); 132 const EMPTY: &Arena<StructFieldData> = &Arena::new();
133 match &self { 133 match &self {
134 VariantData::Record(fields) | VariantData::Tuple(fields) => fields, 134 VariantData::Record(fields) | VariantData::Tuple(fields) => fields,
135 _ => EMPTY, 135 _ => EMPTY,
@@ -183,11 +183,7 @@ pub enum StructKind {
183 183
184fn lower_struct( 184fn lower_struct(
185 db: &dyn DefDatabase, 185 db: &dyn DefDatabase,
186 trace: &mut Trace< 186 trace: &mut Trace<StructFieldData, Either<ast::TupleFieldDef, ast::RecordFieldDef>>,
187 LocalStructFieldId,
188 StructFieldData,
189 Either<ast::TupleFieldDef, ast::RecordFieldDef>,
190 >,
191 ast: &InFile<ast::StructKind>, 187 ast: &InFile<ast::StructKind>,
192) -> StructKind { 188) -> StructKind {
193 match &ast.value { 189 match &ast.value {