1
Fork 0

Rollup merge of #135466 - compiler-errors:leak-check-impossible, r=lcnr

Leak check in `impossible_predicates` to avoid monomorphizing impossible instances

Fixes #135462

r? lcnr
This commit is contained in:
Matthias Krüger 2025-01-14 19:25:06 +01:00 committed by GitHub
commit 866e61aae0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 91 additions and 3 deletions

View file

@ -714,9 +714,18 @@ pub fn impossible_predicates<'tcx>(tcx: TyCtxt<'tcx>, predicates: Vec<ty::Clause
}
let errors = ocx.select_all_or_error();
let result = !errors.is_empty();
debug!("impossible_predicates = {:?}", result);
result
if !errors.is_empty() {
return true;
}
// Leak check for any higher-ranked trait mismatches.
// We only need to do this in the old solver, since the new solver already
// leak-checks.
if !infcx.next_trait_solver() && infcx.leak_check(ty::UniverseIndex::ROOT, None).is_err() {
return true;
}
false
}
fn instantiate_and_check_impossible_predicates<'tcx>(