aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir_def/src/body/lower.rs
diff options
context:
space:
mode:
authorJonas Schievink <[email protected]>2020-06-23 12:46:38 +0100
committerJonas Schievink <[email protected]>2020-06-24 15:53:54 +0100
commit689e147c9dc416027fd36e94673431533df545f9 (patch)
treefe8c4d6937134388bd23416706c08a4de046cf06 /crates/ra_hir_def/src/body/lower.rs
parent5a81427304114d2c6ada9e9258ffe31e715c25bc (diff)
Collect inner items in expression macros
Diffstat (limited to 'crates/ra_hir_def/src/body/lower.rs')
-rw-r--r--crates/ra_hir_def/src/body/lower.rs4
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 {