aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/impl_block.rs
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2019-06-11 15:36:52 +0100
committerAleksey Kladov <[email protected]>2019-06-11 16:28:51 +0100
commita6e339e822bcba4d81f1ab3912ca9612be9b6a0a (patch)
tree2d6444f28ea0501ae768c007243e25b86fef06e2 /crates/ra_hir/src/impl_block.rs
parentf411c2988d40bbdebc5c9a63ce4bfb883a2fbca1 (diff)
use Source for impl block
Diffstat (limited to 'crates/ra_hir/src/impl_block.rs')
-rw-r--r--crates/ra_hir/src/impl_block.rs18
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
10use crate::{ 10use 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
47impl 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
47impl ImplBlock { 56impl 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 {