diff options
author | Jonas Schievink <[email protected]> | 2020-06-23 12:46:38 +0100 |
---|---|---|
committer | Jonas Schievink <[email protected]> | 2020-06-24 15:53:54 +0100 |
commit | 689e147c9dc416027fd36e94673431533df545f9 (patch) | |
tree | fe8c4d6937134388bd23416706c08a4de046cf06 /crates/ra_hir_def/src/body/lower.rs | |
parent | 5a81427304114d2c6ada9e9258ffe31e715c25bc (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.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 { |