diff options
Diffstat (limited to 'crates/ra_hir/src/from_source.rs')
-rw-r--r-- | crates/ra_hir/src/from_source.rs | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/crates/ra_hir/src/from_source.rs b/crates/ra_hir/src/from_source.rs index 307f3d5bf..b35188a21 100644 --- a/crates/ra_hir/src/from_source.rs +++ b/crates/ra_hir/src/from_source.rs | |||
@@ -107,8 +107,10 @@ impl FromSource for MacroDef { | |||
107 | impl FromSource for ImplBlock { | 107 | impl FromSource for ImplBlock { |
108 | type Ast = ast::ImplBlock; | 108 | type Ast = ast::ImplBlock; |
109 | fn from_source(db: &(impl DefDatabase + AstDatabase), src: InFile<Self::Ast>) -> Option<Self> { | 109 | fn from_source(db: &(impl DefDatabase + AstDatabase), src: InFile<Self::Ast>) -> Option<Self> { |
110 | let id = from_source(db, src)?; | 110 | // XXX: use `.parent()` to avoid finding ourselves |
111 | Some(ImplBlock { id }) | 111 | let parent = src.value.syntax().parent()?; |
112 | let container = Container::find(db, src.with_value(parent).as_ref())?; | ||
113 | container.child_by_source(db)[keys::IMPL].get(&src).copied().map(ImplBlock::from) | ||
112 | } | 114 | } |
113 | } | 115 | } |
114 | 116 | ||