From f411c2988d40bbdebc5c9a63ce4bfb883a2fbca1 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 11 Jun 2019 17:34:01 +0300 Subject: use Source for Trait --- crates/ra_hir/src/code_model.rs | 21 ++++++++++++++++----- crates/ra_hir/src/docs.rs | 2 +- crates/ra_hir/src/generics.rs | 2 +- crates/ra_hir/src/traits.rs | 10 +++++----- 4 files changed, 23 insertions(+), 12 deletions(-) (limited to 'crates/ra_hir/src') diff --git a/crates/ra_hir/src/code_model.rs b/crates/ra_hir/src/code_model.rs index 20a8d7d80..0a750b590 100644 --- a/crates/ra_hir/src/code_model.rs +++ b/crates/ra_hir/src/code_model.rs @@ -528,6 +528,13 @@ pub struct EnumVariant { pub(crate) id: EnumVariantId, } +impl HasSource for EnumVariant { + type Ast = TreeArc; + fn source(self, db: &(impl DefDatabase + AstDatabase)) -> Source> { + self.source_impl(db) + } +} + impl EnumVariant { pub fn source( &self, @@ -886,12 +893,16 @@ pub struct Trait { pub(crate) id: TraitId, } +impl HasSource for Trait { + type Ast = TreeArc; + fn source(self, db: &(impl DefDatabase + AstDatabase)) -> Source> { + self.id.source(db).into() + } +} + impl Trait { - pub fn source( - self, - db: &(impl DefDatabase + AstDatabase), - ) -> (HirFileId, TreeArc) { - self.id.source(db) + pub fn source(self, db: &(impl DefDatabase + AstDatabase)) -> Source> { + self.id.source(db).into() } pub fn module(self, db: &impl DefDatabase) -> Module { diff --git a/crates/ra_hir/src/docs.rs b/crates/ra_hir/src/docs.rs index 1c6b4f205..0cb0c0db8 100644 --- a/crates/ra_hir/src/docs.rs +++ b/crates/ra_hir/src/docs.rs @@ -83,7 +83,7 @@ pub(crate) fn documentation_query( DocDef::Const(it) => docs_from_ast(&*it.source(db).ast), DocDef::Function(it) => docs_from_ast(&*it.source(db).ast), DocDef::Union(it) => docs_from_ast(&*it.source(db).1), - DocDef::Trait(it) => docs_from_ast(&*it.source(db).1), + DocDef::Trait(it) => docs_from_ast(&*it.source(db).ast), DocDef::TypeAlias(it) => docs_from_ast(&*it.source(db).ast), DocDef::MacroDef(it) => docs_from_ast(&*it.source(db).1), } diff --git a/crates/ra_hir/src/generics.rs b/crates/ra_hir/src/generics.rs index b7e255c17..08d711754 100644 --- a/crates/ra_hir/src/generics.rs +++ b/crates/ra_hir/src/generics.rs @@ -79,7 +79,7 @@ impl GenericParams { name: Name::self_type(), default: None, }); - generics.fill(&*it.source(db).1, start + 1); + generics.fill(&*it.source(db).ast, start + 1); } GenericDef::TypeAlias(it) => generics.fill(&*it.source(db).ast, start), GenericDef::ImplBlock(it) => generics.fill(&*it.source(db).1, start), diff --git a/crates/ra_hir/src/traits.rs b/crates/ra_hir/src/traits.rs index 967654e97..86dceb2e0 100644 --- a/crates/ra_hir/src/traits.rs +++ b/crates/ra_hir/src/traits.rs @@ -22,12 +22,12 @@ impl TraitData { db: &(impl DefDatabase + AstDatabase), tr: Trait, ) -> Arc { - let (file_id, node) = tr.source(db); - let name = node.name().map(|n| n.as_name()); + let src = tr.source(db); + let name = src.ast.name().map(|n| n.as_name()); let module = tr.module(db); - let ctx = LocationCtx::new(db, module, file_id); - let auto = node.is_auto(); - let items = if let Some(item_list) = node.item_list() { + let ctx = LocationCtx::new(db, module, src.file_id); + let auto = src.ast.is_auto(); + let items = if let Some(item_list) = src.ast.item_list() { item_list .impl_items() .map(|item_node| match item_node.kind() { -- cgit v1.2.3