aboutsummaryrefslogtreecommitdiff
path: root/crates/hir_def/src/body/lower.rs
diff options
context:
space:
mode:
authorJonas Schievink <[email protected]>2021-02-01 12:32:43 +0000
committerJonas Schievink <[email protected]>2021-02-03 14:33:25 +0000
commitda57f5dc17303cfd5ba318d1735c7f325f6b7130 (patch)
treee3df694209537a03437b6b041e4c3cb24c481563 /crates/hir_def/src/body/lower.rs
parent7eff6705cc1c1d4399a7c9da360d344a96df59b6 (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/hir_def/src/body/lower.rs')
-rw-r--r--crates/hir_def/src/body/lower.rs9
1 files changed, 6 insertions, 3 deletions
diff --git a/crates/hir_def/src/body/lower.rs b/crates/hir_def/src/body/lower.rs
index bc61730a7..540c6c9ad 100644
--- a/crates/hir_def/src/body/lower.rs
+++ b/crates/hir_def/src/body/lower.rs
@@ -700,10 +700,13 @@ impl ExprCollector<'_> {
700 let ast_id = self.expander.ast_id(&block); 700 let ast_id = self.expander.ast_id(&block);
701 let block_loc = BlockLoc { ast_id, module: self.expander.module }; 701 let block_loc = BlockLoc { ast_id, module: self.expander.module };
702 let block_id = self.db.intern_block(block_loc); 702 let block_id = self.db.intern_block(block_loc);
703 let def_map = self.db.block_def_map(block_id); 703 let opt_def_map = self.db.block_def_map(block_id);
704 let root = def_map.module_id(def_map.root()); 704 let has_def_map = opt_def_map.is_some();
705 let def_map = opt_def_map.unwrap_or_else(|| self.expander.def_map.clone());
706 let module =
707 if has_def_map { def_map.module_id(def_map.root()) } else { self.expander.module };
705 let prev_def_map = mem::replace(&mut self.expander.def_map, def_map); 708 let prev_def_map = mem::replace(&mut self.expander.def_map, def_map);
706 let prev_module = mem::replace(&mut self.expander.module, root); 709 let prev_module = mem::replace(&mut self.expander.module, module);
707 710
708 self.collect_stmts_items(block.statements()); 711 self.collect_stmts_items(block.statements());
709 let statements = 712 let statements =