diff options
| author | Camille GILLOT <gillot.camille@gmail.com> | 2025-07-22 01:43:44 +0000 |
|---|---|---|
| committer | Camille GILLOT <gillot.camille@gmail.com> | 2025-07-22 01:51:11 +0000 |
| commit | b1d88ba086ee6f34584ed4e8eb09761a03fe249d (patch) | |
| tree | 80fb0693352735249be792f571dc817925179046 | |
| parent | 538b0004bc3a64004c9935c91231ed1d518ee35f (diff) | |
| download | rust-b1d88ba086ee6f34584ed4e8eb09761a03fe249d.tar.gz rust-b1d88ba086ee6f34584ed4e8eb09761a03fe249d.zip | |
Keep elaborating predicates.
| -rw-r--r-- | compiler/rustc_mir_transform/src/impossible_predicates.rs | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/compiler/rustc_mir_transform/src/impossible_predicates.rs b/compiler/rustc_mir_transform/src/impossible_predicates.rs index 9a0de3c9326..b03518de00a 100644 --- a/compiler/rustc_mir_transform/src/impossible_predicates.rs +++ b/compiler/rustc_mir_transform/src/impossible_predicates.rs @@ -41,18 +41,15 @@ impl<'tcx> MirPass<'tcx> for ImpossiblePredicates { tracing::trace!(def_id = ?body.source.def_id()); let predicates = tcx.predicates_of(body.source.def_id()).instantiate_identity(tcx); tracing::trace!(?predicates); - let predicates: Vec<_> = predicates - .predicates - .into_iter() - .filter(|p| { - !p.has_type_flags( - // Only consider global clauses to simplify. - TypeFlags::HAS_FREE_LOCAL_NAMES - // Clauses that refer to unevaluated constants as they cause cycles. - | TypeFlags::HAS_CT_PROJECTION, - ) - }) - .collect(); + let predicates = predicates.predicates.into_iter().filter(|p| { + !p.has_type_flags( + // Only consider global clauses to simplify. + TypeFlags::HAS_FREE_LOCAL_NAMES + // Clauses that refer to unevaluated constants as they cause cycles. + | TypeFlags::HAS_CT_PROJECTION, + ) + }); + let predicates: Vec<_> = traits::elaborate(tcx, predicates).collect(); tracing::trace!(?predicates); if predicates.references_error() || traits::impossible_predicates(tcx, predicates) { trace!("found unsatisfiable predicates"); |
