Replace a find
with a loop to simplify the logic.
This commit is contained in:
parent
562d846ff0
commit
8b1530260c
@ -1647,26 +1647,29 @@ fn check_bound_universal_region(
|
||||
let longer_fr_scc = self.constraint_sccs.scc(longer_fr);
|
||||
debug!("check_bound_universal_region: longer_fr_scc={:?}", longer_fr_scc,);
|
||||
|
||||
// If we have some bound universal region `'a`, then the only
|
||||
// elements it can contain is itself -- we don't know anything
|
||||
// else about it!
|
||||
let Some(error_element) = ({
|
||||
self.scc_values.elements_contained_in(longer_fr_scc).find(|element| match element {
|
||||
RegionElement::Location(_) => true,
|
||||
RegionElement::RootUniversalRegion(_) => true,
|
||||
RegionElement::PlaceholderRegion(placeholder1) => placeholder != *placeholder1,
|
||||
})
|
||||
}) else {
|
||||
return;
|
||||
};
|
||||
debug!("check_bound_universal_region: error_element = {:?}", error_element);
|
||||
for error_element in self.scc_values.elements_contained_in(longer_fr_scc) {
|
||||
match error_element {
|
||||
RegionElement::Location(_) | RegionElement::RootUniversalRegion(_) => {}
|
||||
// If we have some bound universal region `'a`, then the only
|
||||
// elements it can contain is itself -- we don't know anything
|
||||
// else about it!
|
||||
RegionElement::PlaceholderRegion(placeholder1) => {
|
||||
if placeholder == placeholder1 {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Find the region that introduced this `error_element`.
|
||||
errors_buffer.push(RegionErrorKind::BoundUniversalRegionError {
|
||||
longer_fr,
|
||||
error_element,
|
||||
placeholder,
|
||||
});
|
||||
errors_buffer.push(RegionErrorKind::BoundUniversalRegionError {
|
||||
longer_fr,
|
||||
error_element,
|
||||
placeholder,
|
||||
});
|
||||
|
||||
// Stop after the first error, it gets too noisy otherwise, and does not provide more information.
|
||||
break;
|
||||
}
|
||||
debug!("check_bound_universal_region: all bounds satisfied");
|
||||
}
|
||||
|
||||
#[instrument(level = "debug", skip(self, infcx, errors_buffer))]
|
||||
|
Loading…
Reference in New Issue
Block a user