about summary refs log tree commit diff
path: root/compiler/rustc_mir_transform/src
diff options
context:
space:
mode:
authorCamille GILLOT <gillot.camille@gmail.com>2025-07-20 23:12:44 +0000
committerCamille GILLOT <gillot.camille@gmail.com>2025-07-20 23:15:24 +0000
commit538b0004bc3a64004c9935c91231ed1d518ee35f (patch)
treeb6f299fcc7230e351374b690502f91698b2c060a /compiler/rustc_mir_transform/src
parent1987471d05854cc8b5014dab44e7648834c02213 (diff)
downloadrust-538b0004bc3a64004c9935c91231ed1d518ee35f.tar.gz
rust-538b0004bc3a64004c9935c91231ed1d518ee35f.zip
Also bail out if predicates contain errors.
Diffstat (limited to 'compiler/rustc_mir_transform/src')
-rw-r--r--compiler/rustc_mir_transform/src/impossible_predicates.rs4
1 files changed, 2 insertions, 2 deletions
diff --git a/compiler/rustc_mir_transform/src/impossible_predicates.rs b/compiler/rustc_mir_transform/src/impossible_predicates.rs
index 5f116d7716d..9a0de3c9326 100644
--- a/compiler/rustc_mir_transform/src/impossible_predicates.rs
+++ b/compiler/rustc_mir_transform/src/impossible_predicates.rs
@@ -41,7 +41,7 @@ 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 = predicates
+        let predicates: Vec<_> = predicates
             .predicates
             .into_iter()
             .filter(|p| {
@@ -54,7 +54,7 @@ impl<'tcx> MirPass<'tcx> for ImpossiblePredicates {
             })
             .collect();
         tracing::trace!(?predicates);
-        if traits::impossible_predicates(tcx, predicates) {
+        if predicates.references_error() || traits::impossible_predicates(tcx, predicates) {
             trace!("found unsatisfiable predicates");
             // Clear the body to only contain a single `unreachable` statement.
             let bbs = body.basic_blocks.as_mut();