From a6e339e822bcba4d81f1ab3912ca9612be9b6a0a Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 11 Jun 2019 17:36:52 +0300 Subject: use Source for impl block --- crates/ra_hir/src/impl_block.rs | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'crates/ra_hir/src/impl_block.rs') diff --git a/crates/ra_hir/src/impl_block.rs b/crates/ra_hir/src/impl_block.rs index a0d3b33fe..8194f38d4 100644 --- a/crates/ra_hir/src/impl_block.rs +++ b/crates/ra_hir/src/impl_block.rs @@ -8,7 +8,7 @@ use ra_syntax::{ }; use crate::{ - Const, TypeAlias, Function, HirFileId, AstDatabase, + Const, TypeAlias, Function, HirFileId, AstDatabase, HasSource, Source, HirDatabase, DefDatabase, TraitRef, type_ref::TypeRef, ids::LocationCtx, @@ -44,6 +44,15 @@ pub struct ImplBlock { impl_id: ImplId, } +impl HasSource for ImplBlock { + type Ast = TreeArc; + fn source(self, db: &(impl DefDatabase + AstDatabase)) -> Source> { + let source_map = db.impls_in_module_with_source_map(self.module).1; + let (file_id, source) = self.module.definition_source(db); + (file_id, source_map.get(&source, self.impl_id)).into() + } +} + impl ImplBlock { pub(crate) fn containing( module_impl_blocks: Arc, @@ -58,13 +67,10 @@ impl ImplBlock { } /// Returns the syntax of the impl block - pub fn source( - &self, - db: &(impl DefDatabase + AstDatabase), - ) -> (HirFileId, TreeArc) { + pub fn source(&self, db: &(impl DefDatabase + AstDatabase)) -> Source> { let source_map = db.impls_in_module_with_source_map(self.module).1; let (file_id, source) = self.module.definition_source(db); - (file_id, source_map.get(&source, self.impl_id)) + (file_id, source_map.get(&source, self.impl_id)).into() } pub fn id(&self) -> ImplId { -- cgit v1.2.3