From 91c120ccea4f0cfef20fd4d918154c8152f83816 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 11 Jun 2019 02:34:34 +0300 Subject: introduce Source struct --- crates/ra_hir/src/adt.rs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'crates/ra_hir/src/adt.rs') diff --git a/crates/ra_hir/src/adt.rs b/crates/ra_hir/src/adt.rs index 38ff1d6f6..36679e99b 100644 --- a/crates/ra_hir/src/adt.rs +++ b/crates/ra_hir/src/adt.rs @@ -59,8 +59,8 @@ impl StructData { db: &(impl DefDatabase + AstDatabase), struct_: Struct, ) -> Arc { - let (_, struct_def) = struct_.source(db); - Arc::new(StructData::new(&*struct_def)) + let src = struct_.source(db); + Arc::new(StructData::new(&*src.ast)) } } @@ -211,9 +211,8 @@ impl StructField { let es; let (file_id, struct_kind) = match self.parent { VariantDef::Struct(s) => { - let (file_id, source) = s.source(db); - ss = source; - (file_id, ss.kind()) + ss = s.source(db); + (ss.file_id, ss.ast.kind()) } VariantDef::EnumVariant(e) => { let (file_id, source) = e.source(db); -- cgit v1.2.3 From 2a1fe26b6d354dbbd1b3843d288d56e74fa00557 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 11 Jun 2019 03:17:29 +0300 Subject: use Source more --- crates/ra_hir/src/adt.rs | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) (limited to 'crates/ra_hir/src/adt.rs') diff --git a/crates/ra_hir/src/adt.rs b/crates/ra_hir/src/adt.rs index 36679e99b..2b372333f 100644 --- a/crates/ra_hir/src/adt.rs +++ b/crates/ra_hir/src/adt.rs @@ -11,7 +11,7 @@ use ra_syntax::{ use crate::{ Name, AsName, Struct, Union, Enum, EnumVariant, Crate, AstDatabase, - HirDatabase, HirFileId, StructField, FieldSource, + HirDatabase, HirFileId, StructField, FieldSource, Source, type_ref::TypeRef, DefDatabase, }; @@ -72,15 +72,15 @@ impl EnumVariant { pub(crate) fn source_impl( &self, db: &(impl DefDatabase + AstDatabase), - ) -> (HirFileId, TreeArc) { - let (file_id, enum_def) = self.parent.source(db); - let var = variants(&*enum_def) + ) -> Source> { + let src = self.parent.source(db); + let ast = variants(&*src.ast) .zip(db.enum_data(self.parent).variants.iter()) .find(|(_syntax, (id, _))| *id == self.id) .unwrap() .0 .to_owned(); - (file_id, var) + Source { file_id: src.file_id, ast } } pub(crate) fn variant_data(&self, db: &impl DefDatabase) -> Arc { db.enum_data(self.parent).variants[self.id].variant_data.clone() @@ -95,9 +95,9 @@ pub struct EnumData { impl EnumData { pub(crate) fn enum_data_query(db: &(impl DefDatabase + AstDatabase), e: Enum) -> Arc { - let (_file_id, enum_def) = e.source(db); - let name = enum_def.name().map(|n| n.as_name()); - let variants = variants(&*enum_def) + let src = e.source(db); + let name = src.ast.name().map(|n| n.as_name()); + let variants = variants(&*src.ast) .map(|var| EnumVariantData { name: var.name().map(|it| it.as_name()), variant_data: Arc::new(VariantData::new(var.kind())), @@ -215,9 +215,8 @@ impl StructField { (ss.file_id, ss.ast.kind()) } VariantDef::EnumVariant(e) => { - let (file_id, source) = e.source(db); - es = source; - (file_id, es.kind()) + es = e.source(db); + (es.file_id, es.ast.kind()) } }; -- cgit v1.2.3 From c4512fadb1b332b13bb41b0aa8a28aa964664842 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 11 Jun 2019 17:54:51 +0300 Subject: remove inherent source impls --- crates/ra_hir/src/adt.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'crates/ra_hir/src/adt.rs') diff --git a/crates/ra_hir/src/adt.rs b/crates/ra_hir/src/adt.rs index 2b372333f..6b8604b3e 100644 --- a/crates/ra_hir/src/adt.rs +++ b/crates/ra_hir/src/adt.rs @@ -11,7 +11,7 @@ use ra_syntax::{ use crate::{ Name, AsName, Struct, Union, Enum, EnumVariant, Crate, AstDatabase, - HirDatabase, HirFileId, StructField, FieldSource, Source, + HirDatabase, HirFileId, StructField, FieldSource, Source, HasSource, type_ref::TypeRef, DefDatabase, }; -- cgit v1.2.3 From 26753f0e4931e2980f008015cbd709a77d71c0f3 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 11 Jun 2019 18:07:42 +0300 Subject: remove unneded From(..) impl --- crates/ra_hir/src/adt.rs | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) (limited to 'crates/ra_hir/src/adt.rs') diff --git a/crates/ra_hir/src/adt.rs b/crates/ra_hir/src/adt.rs index 6b8604b3e..b3843b35c 100644 --- a/crates/ra_hir/src/adt.rs +++ b/crates/ra_hir/src/adt.rs @@ -11,7 +11,7 @@ use ra_syntax::{ use crate::{ Name, AsName, Struct, Union, Enum, EnumVariant, Crate, AstDatabase, - HirDatabase, HirFileId, StructField, FieldSource, Source, HasSource, + HirDatabase, StructField, FieldSource, Source, HasSource, type_ref::TypeRef, DefDatabase, }; @@ -201,10 +201,7 @@ impl VariantDef { } impl StructField { - pub(crate) fn source_impl( - &self, - db: &(impl DefDatabase + AstDatabase), - ) -> (HirFileId, FieldSource) { + pub(crate) fn source_impl(&self, db: &(impl DefDatabase + AstDatabase)) -> Source { let var_data = self.parent.variant_data(db); let fields = var_data.fields().unwrap(); let ss; @@ -229,12 +226,12 @@ impl StructField { } ast::StructKind::Unit => Vec::new(), }; - let field = field_sources + let ast = field_sources .into_iter() .zip(fields.iter()) .find(|(_syntax, (id, _))| *id == self.id) .unwrap() .0; - (file_id, field) + Source { file_id, ast } } } -- cgit v1.2.3