From da57f5dc17303cfd5ba318d1735c7f325f6b7130 Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Mon, 1 Feb 2021 13:32:43 +0100 Subject: Shortcut `block_def_map` if there's no inner items This previously didn't work, but apparently only because of the wonky test setup --- crates/hir_def/src/body/tests.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'crates/hir_def/src/body/tests.rs') diff --git a/crates/hir_def/src/body/tests.rs b/crates/hir_def/src/body/tests.rs index da60072ce..404603360 100644 --- a/crates/hir_def/src/body/tests.rs +++ b/crates/hir_def/src/body/tests.rs @@ -43,7 +43,7 @@ fn block_def_map_at(ra_fixture: &str) -> Arc { let mut block = block_at_pos(&db, &def_map, position).expect("couldn't find enclosing function or block"); loop { - let def_map = db.block_def_map(block); + let def_map = db.block_def_map(block).unwrap_or_else(|| def_map.clone()); let new_block = block_at_pos(&db, &def_map, position); match new_block { Some(new_block) => { @@ -58,6 +58,7 @@ fn block_def_map_at(ra_fixture: &str) -> Arc { } fn block_at_pos(db: &dyn DefDatabase, def_map: &DefMap, position: FilePosition) -> Option { + // Find the smallest (innermost) function containing the cursor. let mut size = None; let mut fn_def = None; for (_, module) in def_map.modules() { @@ -73,7 +74,6 @@ fn block_at_pos(db: &dyn DefDatabase, def_map: &DefMap, position: FilePosition) let ast = ast_map.get(item_tree[it.lookup(db).id.value].ast_id).to_node(&root); let range = ast.syntax().text_range(); - // Find the smallest (innermost) function containing the cursor. if !range.contains(position.offset) { continue; } -- cgit v1.2.3