mirror of
https://github.com/rust-lang/rust.git
synced 2025-05-14 02:49:40 +00:00
remove unnecessary eval_verify_bound
This commit is contained in:
parent
96e51d9482
commit
baf4bb7100
@ -973,7 +973,7 @@ impl<'tcx> RegionInferenceContext<'tcx> {
|
|||||||
propagated_outlives_requirements: &mut Vec<ClosureOutlivesRequirement<'tcx>>,
|
propagated_outlives_requirements: &mut Vec<ClosureOutlivesRequirement<'tcx>>,
|
||||||
) -> bool {
|
) -> bool {
|
||||||
let tcx = infcx.tcx;
|
let tcx = infcx.tcx;
|
||||||
let TypeTest { generic_kind, lower_bound, span: blame_span, ref verify_bound } = *type_test;
|
let TypeTest { generic_kind, lower_bound, span: blame_span, verify_bound: _ } = *type_test;
|
||||||
|
|
||||||
let generic_ty = generic_kind.to_ty(tcx);
|
let generic_ty = generic_kind.to_ty(tcx);
|
||||||
let Some(subject) = self.try_promote_type_test_subject(infcx, generic_ty) else {
|
let Some(subject) = self.try_promote_type_test_subject(infcx, generic_ty) else {
|
||||||
@ -1013,23 +1013,6 @@ impl<'tcx> RegionInferenceContext<'tcx> {
|
|||||||
// `ClosureOutlivesRequirement`.
|
// `ClosureOutlivesRequirement`.
|
||||||
for ur in self.scc_values.universal_regions_outlived_by(r_scc) {
|
for ur in self.scc_values.universal_regions_outlived_by(r_scc) {
|
||||||
debug!("universal_region_outlived_by ur={:?}", ur);
|
debug!("universal_region_outlived_by ur={:?}", ur);
|
||||||
// Check whether we can already prove that the "subject" outlives `ur`.
|
|
||||||
// If so, we don't have to propagate this requirement to our caller.
|
|
||||||
//
|
|
||||||
// To continue the example from the function, if we are trying to promote
|
|
||||||
// a requirement that `T: 'X`, and we know that `'X = '1 + '2` (i.e., the union
|
|
||||||
// `'1` and `'2`), then in this loop `ur` will be `'1` (and `'2`). So here
|
|
||||||
// we check whether `T: '1` is something we *can* prove. If so, no need
|
|
||||||
// to propagate that requirement.
|
|
||||||
//
|
|
||||||
// This is needed because -- particularly in the case
|
|
||||||
// where `ur` is a local bound -- we are sometimes in a
|
|
||||||
// position to prove things that our caller cannot. See
|
|
||||||
// #53570 for an example.
|
|
||||||
if self.eval_verify_bound(infcx, generic_ty, ur, &verify_bound) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
let non_local_ub = self.universal_region_relations.non_local_upper_bounds(ur);
|
let non_local_ub = self.universal_region_relations.non_local_upper_bounds(ur);
|
||||||
debug!(?non_local_ub);
|
debug!(?non_local_ub);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user