From 0103f5df8fff2ccdbfb03adfe432b69c7840cf42 Mon Sep 17 00:00:00 2001 From: Brandon Date: Tue, 16 Mar 2021 00:46:57 -0700 Subject: Fix missing unresolved macro diagnostic in function body --- crates/hir_def/src/data.rs | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) (limited to 'crates/hir_def/src/data.rs') diff --git a/crates/hir_def/src/data.rs b/crates/hir_def/src/data.rs index aea53d527..e3bb9de08 100644 --- a/crates/hir_def/src/data.rs +++ b/crates/hir_def/src/data.rs @@ -261,23 +261,26 @@ fn collect_items( let ast_id_map = db.ast_id_map(file_id); let root = db.parse_or_expand(file_id).unwrap(); let call = ast_id_map.get(call.ast_id).to_node(&root); - - if let Some((mark, mac)) = expander.enter_expand(db, call).value { - let src: InFile = expander.to_source(mac); - let item_tree = db.item_tree(src.file_id); - let iter = - item_tree.top_level_items().iter().filter_map(ModItem::as_assoc_item); - items.extend(collect_items( - db, - module, - expander, - iter, - src.file_id, - container, - limit - 1, - )); - - expander.exit(db, mark); + let res = expander.enter_expand(db, call); + + if let Ok(res) = res { + if let Some((mark, mac)) = res.value { + let src: InFile = expander.to_source(mac); + let item_tree = db.item_tree(src.file_id); + let iter = + item_tree.top_level_items().iter().filter_map(ModItem::as_assoc_item); + items.extend(collect_items( + db, + module, + expander, + iter, + src.file_id, + container, + limit - 1, + )); + + expander.exit(db, mark); + } } } } -- cgit v1.2.3