Rollup merge of #124185 - beepster4096:move_data_base_local_infallible, r=pnkfelix
Remove optionality from MoveData::base_local This is an artifact from when Places could be based on statics and not just locals. Now, all move paths either are locals or have parents, so this doesn't need to return Option anymore.
This commit is contained in:
commit
6ce9708ce5
@ -109,9 +109,7 @@ fn visit_local(&mut self, local: Local, ctx: PlaceContext, _: Location) {
|
||||
has_storage_dead.visit_body(body);
|
||||
let mut has_storage_dead_or_moved = has_storage_dead.0;
|
||||
for move_out in &move_data.moves {
|
||||
if let Some(index) = move_data.base_local(move_out.path) {
|
||||
has_storage_dead_or_moved.insert(index);
|
||||
}
|
||||
has_storage_dead_or_moved.insert(move_data.base_local(move_out.path));
|
||||
}
|
||||
LocalsStateAtExit::SomeAreInvalidated { has_storage_dead_or_moved }
|
||||
}
|
||||
|
@ -358,20 +358,15 @@ pub fn gather_moves(
|
||||
builder::gather_moves(body, tcx, param_env, filter)
|
||||
}
|
||||
|
||||
/// For the move path `mpi`, returns the root local variable (if any) that starts the path.
|
||||
/// (e.g., for a path like `a.b.c` returns `Some(a)`)
|
||||
pub fn base_local(&self, mut mpi: MovePathIndex) -> Option<Local> {
|
||||
/// For the move path `mpi`, returns the root local variable that starts the path.
|
||||
/// (e.g., for a path like `a.b.c` returns `a`)
|
||||
pub fn base_local(&self, mut mpi: MovePathIndex) -> Local {
|
||||
loop {
|
||||
let path = &self.move_paths[mpi];
|
||||
if let Some(l) = path.place.as_local() {
|
||||
return Some(l);
|
||||
}
|
||||
if let Some(parent) = path.parent {
|
||||
mpi = parent;
|
||||
continue;
|
||||
} else {
|
||||
return None;
|
||||
return l;
|
||||
}
|
||||
mpi = path.parent.expect("root move paths should be locals");
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user