Rollup merge of #108902 - lcnr:do-while-sus, r=davidtwco,Nilstrieb
no more do while :<
This commit is contained in:
commit
5e449b32b5
2 changed files with 23 additions and 25 deletions
|
@ -588,8 +588,8 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
|
|||
// let PATTERN = ... might not even exist until we do the assignment.
|
||||
// so we set it here instead.
|
||||
if set_match_place {
|
||||
let mut candidate_ref = &candidate;
|
||||
while let Some(next) = {
|
||||
let mut next = Some(&candidate);
|
||||
while let Some(candidate_ref) = next.take() {
|
||||
for binding in &candidate_ref.bindings {
|
||||
let local = self.var_local_id(binding.var_id, OutsideGuard);
|
||||
// `try_to_place` may fail if it is unable to resolve the given
|
||||
|
@ -617,9 +617,7 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
|
|||
}
|
||||
// All of the subcandidates should bind the same locals, so we
|
||||
// only visit the first one.
|
||||
candidate_ref.subcandidates.get(0)
|
||||
} {
|
||||
candidate_ref = next;
|
||||
next = candidate_ref.subcandidates.get(0)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -537,14 +537,9 @@ impl TraverseCoverageGraphWithLoops {
|
|||
"TraverseCoverageGraphWithLoops::next - context_stack: {:?}",
|
||||
self.context_stack.iter().rev().collect::<Vec<_>>()
|
||||
);
|
||||
while let Some(next_bcb) = {
|
||||
// Strip contexts with empty worklists from the top of the stack
|
||||
while self.context_stack.last().map_or(false, |context| context.worklist.is_empty()) {
|
||||
self.context_stack.pop();
|
||||
}
|
||||
// Pop the next bcb off of the current context_stack. If none, all BCBs were visited.
|
||||
self.context_stack.last_mut().map_or(None, |context| context.worklist.pop())
|
||||
} {
|
||||
|
||||
while let Some(context) = self.context_stack.last_mut() {
|
||||
if let Some(next_bcb) = context.worklist.pop() {
|
||||
if !self.visited.insert(next_bcb) {
|
||||
debug!("Already visited: {:?}", next_bcb);
|
||||
continue;
|
||||
|
@ -559,7 +554,12 @@ impl TraverseCoverageGraphWithLoops {
|
|||
}
|
||||
self.extend_worklist(basic_coverage_blocks, next_bcb);
|
||||
return Some(next_bcb);
|
||||
} else {
|
||||
// Strip contexts with empty worklists from the top of the stack
|
||||
self.context_stack.pop();
|
||||
}
|
||||
}
|
||||
|
||||
None
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue