Skip to content

Commit 3ea5ea1

Browse files
Merge #8323
8323: Only remember blocks that have a DefMap r=jonas-schievink a=jonas-schievink bors r+ Co-authored-by: Jonas Schievink <[email protected]>
2 parents 4c8ee9a + 9b13e1b commit 3ea5ea1

File tree

2 files changed

+8
-6
lines changed

2 files changed

+8
-6
lines changed

crates/hir_def/src/body.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,7 @@ impl Body {
317317
) -> impl Iterator<Item = (BlockId, Arc<DefMap>)> + '_ {
318318
self.block_scopes
319319
.iter()
320-
.filter_map(move |block| db.block_def_map(*block).map(|map| (*block, map)))
320+
.map(move |block| (*block, db.block_def_map(*block).expect("block ID without DefMap")))
321321
}
322322

323323
fn new(

crates/hir_def/src/body/lower.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -673,12 +673,14 @@ impl ExprCollector<'_> {
673673
let block_loc =
674674
BlockLoc { ast_id, module: self.expander.def_map.module_id(self.expander.module) };
675675
let block_id = self.db.intern_block(block_loc);
676-
self.body.block_scopes.push(block_id);
677676

678-
let opt_def_map = self.db.block_def_map(block_id);
679-
let has_def_map = opt_def_map.is_some();
680-
let def_map = opt_def_map.unwrap_or_else(|| self.expander.def_map.clone());
681-
let module = if has_def_map { def_map.root() } else { self.expander.module };
677+
let (module, def_map) = match self.db.block_def_map(block_id) {
678+
Some(def_map) => {
679+
self.body.block_scopes.push(block_id);
680+
(def_map.root(), def_map)
681+
}
682+
None => (self.expander.module, self.expander.def_map.clone()),
683+
};
682684
let prev_def_map = mem::replace(&mut self.expander.def_map, def_map);
683685
let prev_local_module = mem::replace(&mut self.expander.module, module);
684686
let prev_statements = std::mem::take(&mut self.statements_in_scope);

0 commit comments

Comments
 (0)