diff options
Diffstat (limited to 'crates/hir_def/src/body/lower.rs')
-rw-r--r-- | crates/hir_def/src/body/lower.rs | 9 |
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 = |