about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAli MJ Al-Nasrawy <alimjalnasrawy@gmail.com>2023-12-17 14:07:13 +0000
committerAli MJ Al-Nasrawy <alimjalnasrawy@gmail.com>2023-12-17 17:24:04 +0000
commite0df93b07e79d22cf56536a63c57d3b11748d569 (patch)
treee8b939a4b644e0a005dc81edd57236c36fd635c7
parent604f185fae9a4b0edf7e28f616a0f53880f8f074 (diff)
downloadrust-e0df93b07e79d22cf56536a63c57d3b11748d569.tar.gz
rust-e0df93b07e79d22cf56536a63c57d3b11748d569.zip
don't fold ParamEnv in register_predicate_obligation
-rw-r--r--compiler/rustc_trait_selection/src/traits/fulfill.rs5
1 files changed, 3 insertions, 2 deletions
diff --git a/compiler/rustc_trait_selection/src/traits/fulfill.rs b/compiler/rustc_trait_selection/src/traits/fulfill.rs
index 9cbddd2bb2b..045d7e444b6 100644
--- a/compiler/rustc_trait_selection/src/traits/fulfill.rs
+++ b/compiler/rustc_trait_selection/src/traits/fulfill.rs
@@ -116,12 +116,13 @@ impl<'tcx> TraitEngine<'tcx> for FulfillmentContext<'tcx> {
     fn register_predicate_obligation(
         &mut self,
         infcx: &InferCtxt<'tcx>,
-        obligation: PredicateObligation<'tcx>,
+        mut obligation: PredicateObligation<'tcx>,
     ) {
         assert_eq!(self.usable_in_snapshot, infcx.num_open_snapshots());
         // this helps to reduce duplicate errors, as well as making
         // debug output much nicer to read and so on.
-        let obligation = infcx.resolve_vars_if_possible(obligation);
+        debug_assert!(!obligation.param_env.has_non_region_infer());
+        obligation.predicate = infcx.resolve_vars_if_possible(obligation.predicate);
 
         debug!(?obligation, "register_predicate_obligation");