diff options
Diffstat (limited to 'crates/ra_hir_def/src/body/lower.rs')
-rw-r--r-- | crates/ra_hir_def/src/body/lower.rs | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/crates/ra_hir_def/src/body/lower.rs b/crates/ra_hir_def/src/body/lower.rs index e7cf80676..bbde0b802 100644 --- a/crates/ra_hir_def/src/body/lower.rs +++ b/crates/ra_hir_def/src/body/lower.rs | |||
@@ -564,12 +564,14 @@ impl ExprCollector<'_> { | |||
564 | }); | 564 | }); |
565 | let tree = &self.item_trees[index].1; | 565 | let tree = &self.item_trees[index].1; |
566 | 566 | ||
567 | // FIXME: This probably breaks with `use` items, since they produce multiple item tree nodes | ||
568 | |||
567 | // Root file (non-macro). | 569 | // Root file (non-macro). |
568 | tree.all_inner_items() | 570 | tree.all_inner_items() |
569 | .chain(tree.top_level_items().iter().copied()) | 571 | .chain(tree.top_level_items().iter().copied()) |
570 | .filter_map(|mod_item| mod_item.downcast::<S>()) | 572 | .filter_map(|mod_item| mod_item.downcast::<S>()) |
571 | .find(|tree_id| tree[*tree_id].ast_id().upcast() == id.value) | 573 | .find(|tree_id| tree[*tree_id].ast_id().upcast() == id.value) |
572 | .unwrap() | 574 | .unwrap_or_else(|| panic!("couldn't find inner item for {:?}", id)) |
573 | } | 575 | } |
574 | 576 | ||
575 | fn collect_expr_opt(&mut self, expr: Option<ast::Expr>) -> ExprId { | 577 | fn collect_expr_opt(&mut self, expr: Option<ast::Expr>) -> ExprId { |