diff options
author | Jonas Schievink <[email protected]> | 2021-02-01 12:32:43 +0000 |
---|---|---|
committer | Jonas Schievink <[email protected]> | 2021-02-01 12:33:18 +0000 |
commit | b4aa860cac98d69fe4e38602904a6e9e6569e5a6 (patch) | |
tree | 2d6a120c6bf8219f801c305dfd0b5ef4d19039a1 /crates | |
parent | 80ae583dc02967f329254ed0949f1158c5304d83 (diff) |
Shortcut `block_def_map` if there's no inner items
This previously didn't work, but apparently only because of the wonky
test setup
Diffstat (limited to 'crates')
-rw-r--r-- | crates/hir_def/src/nameres.rs | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/crates/hir_def/src/nameres.rs b/crates/hir_def/src/nameres.rs index 6169b3bbc..9839761d1 100644 --- a/crates/hir_def/src/nameres.rs +++ b/crates/hir_def/src/nameres.rs | |||
@@ -201,8 +201,10 @@ impl DefMap { | |||
201 | let block: BlockLoc = db.lookup_intern_block(block_id); | 201 | let block: BlockLoc = db.lookup_intern_block(block_id); |
202 | let parent = block.module.def_map(db); | 202 | let parent = block.module.def_map(db); |
203 | 203 | ||
204 | // FIXME: It would be good to just return the parent map when the block has no items, but | 204 | let item_tree = db.item_tree(block.ast_id.file_id); |
205 | // we rely on `def_map.block` in a few places, which is `Some` for the inner `DefMap`. | 205 | if item_tree.inner_items_of_block(block.ast_id.value).is_empty() { |
206 | return parent.clone(); | ||
207 | } | ||
206 | 208 | ||
207 | let block_info = | 209 | let block_info = |
208 | BlockInfo { block: block_id, parent, parent_module: block.module.local_id }; | 210 | BlockInfo { block: block_id, parent, parent_module: block.module.local_id }; |