diff options
Diffstat (limited to 'crates/ra_hir/src/impl_block.rs')
-rw-r--r-- | crates/ra_hir/src/impl_block.rs | 18 |
1 files changed, 12 insertions, 6 deletions
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::{ | |||
8 | }; | 8 | }; |
9 | 9 | ||
10 | use crate::{ | 10 | use crate::{ |
11 | Const, TypeAlias, Function, HirFileId, AstDatabase, | 11 | Const, TypeAlias, Function, HirFileId, AstDatabase, HasSource, Source, |
12 | HirDatabase, DefDatabase, TraitRef, | 12 | HirDatabase, DefDatabase, TraitRef, |
13 | type_ref::TypeRef, | 13 | type_ref::TypeRef, |
14 | ids::LocationCtx, | 14 | ids::LocationCtx, |
@@ -44,6 +44,15 @@ pub struct ImplBlock { | |||
44 | impl_id: ImplId, | 44 | impl_id: ImplId, |
45 | } | 45 | } |
46 | 46 | ||
47 | impl HasSource for ImplBlock { | ||
48 | type Ast = TreeArc<ast::ImplBlock>; | ||
49 | fn source(self, db: &(impl DefDatabase + AstDatabase)) -> Source<TreeArc<ast::ImplBlock>> { | ||
50 | let source_map = db.impls_in_module_with_source_map(self.module).1; | ||
51 | let (file_id, source) = self.module.definition_source(db); | ||
52 | (file_id, source_map.get(&source, self.impl_id)).into() | ||
53 | } | ||
54 | } | ||
55 | |||
47 | impl ImplBlock { | 56 | impl ImplBlock { |
48 | pub(crate) fn containing( | 57 | pub(crate) fn containing( |
49 | module_impl_blocks: Arc<ModuleImplBlocks>, | 58 | module_impl_blocks: Arc<ModuleImplBlocks>, |
@@ -58,13 +67,10 @@ impl ImplBlock { | |||
58 | } | 67 | } |
59 | 68 | ||
60 | /// Returns the syntax of the impl block | 69 | /// Returns the syntax of the impl block |
61 | pub fn source( | 70 | pub fn source(&self, db: &(impl DefDatabase + AstDatabase)) -> Source<TreeArc<ast::ImplBlock>> { |
62 | &self, | ||
63 | db: &(impl DefDatabase + AstDatabase), | ||
64 | ) -> (HirFileId, TreeArc<ast::ImplBlock>) { | ||
65 | let source_map = db.impls_in_module_with_source_map(self.module).1; | 71 | let source_map = db.impls_in_module_with_source_map(self.module).1; |
66 | let (file_id, source) = self.module.definition_source(db); | 72 | let (file_id, source) = self.module.definition_source(db); |
67 | (file_id, source_map.get(&source, self.impl_id)) | 73 | (file_id, source_map.get(&source, self.impl_id)).into() |
68 | } | 74 | } |
69 | 75 | ||
70 | pub fn id(&self) -> ImplId { | 76 | pub fn id(&self) -> ImplId { |