]> git.lizzy.rs Git - rust.git/commitdiff
Use ObligationCtxt in impossible_predicates
authorMichael Goulet <michael@errs.io>
Tue, 26 Jul 2022 04:01:34 +0000 (04:01 +0000)
committerMichael Goulet <michael@errs.io>
Thu, 4 Aug 2022 13:42:13 +0000 (13:42 +0000)
compiler/rustc_trait_selection/src/traits/mod.rs

index 8e1fa956fd610ffd281b981084bdb47fd5994d53..b8cbfcb8b795e3ca86c734924655895474d34dd7 100644 (file)
@@ -427,20 +427,13 @@ pub fn impossible_predicates<'tcx>(
         infcx.set_tainted_by_errors();
 
         let param_env = ty::ParamEnv::reveal_all();
-        let mut selcx = SelectionContext::new(&infcx);
-        let mut fulfill_cx = FulfillmentContext::new();
-        let cause = ObligationCause::dummy();
-        let Normalized { value: predicates, obligations } =
-            normalize(&mut selcx, param_env, cause.clone(), predicates);
-        for obligation in obligations {
-            fulfill_cx.register_predicate_obligation(&infcx, obligation);
-        }
+        let ocx = ObligationCtxt::new(&infcx);
+        let predicates = ocx.normalize(ObligationCause::dummy(), param_env, predicates);
         for predicate in predicates {
-            let obligation = Obligation::new(cause.clone(), param_env, predicate);
-            fulfill_cx.register_predicate_obligation(&infcx, obligation);
+            let obligation = Obligation::new(ObligationCause::dummy(), param_env, predicate);
+            ocx.register_obligation(obligation);
         }
-
-        let errors = fulfill_cx.select_all_or_error(&infcx);
+        let errors = ocx.select_all_or_error();
 
         // Clean up after ourselves
         let _ = infcx.inner.borrow_mut().opaque_type_storage.take_opaque_types();