aboutsummaryrefslogtreecommitdiff
path: root/crates/hir_def/src/data.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/hir_def/src/data.rs')
-rw-r--r--crates/hir_def/src/data.rs37
1 files changed, 20 insertions, 17 deletions
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(
261 let ast_id_map = db.ast_id_map(file_id); 261 let ast_id_map = db.ast_id_map(file_id);
262 let root = db.parse_or_expand(file_id).unwrap(); 262 let root = db.parse_or_expand(file_id).unwrap();
263 let call = ast_id_map.get(call.ast_id).to_node(&root); 263 let call = ast_id_map.get(call.ast_id).to_node(&root);
264 264 let res = expander.enter_expand(db, call);
265 if let Some((mark, mac)) = expander.enter_expand(db, call).value { 265
266 let src: InFile<ast::MacroItems> = expander.to_source(mac); 266 if let Ok(res) = res {
267 let item_tree = db.item_tree(src.file_id); 267 if let Some((mark, mac)) = res.value {
268 let iter = 268 let src: InFile<ast::MacroItems> = expander.to_source(mac);
269 item_tree.top_level_items().iter().filter_map(ModItem::as_assoc_item); 269 let item_tree = db.item_tree(src.file_id);
270 items.extend(collect_items( 270 let iter =
271 db, 271 item_tree.top_level_items().iter().filter_map(ModItem::as_assoc_item);
272 module, 272 items.extend(collect_items(
273 expander, 273 db,
274 iter, 274 module,
275 src.file_id, 275 expander,
276 container, 276 iter,
277 limit - 1, 277 src.file_id,
278 )); 278 container,
279 279 limit - 1,
280 expander.exit(db, mark); 280 ));
281
282 expander.exit(db, mark);
283 }
281 } 284 }
282 } 285 }
283 } 286 }