1
Fork 0

No need to probe when computing goals

This commit is contained in:
Michael Goulet 2023-01-27 04:00:37 +00:00
parent 7919ef0ec5
commit ff2413db1b

View file

@ -337,15 +337,13 @@ impl<'a, 'tcx> EvalCtxt<'a, 'tcx> {
// That won't actually reflect in the query response, so it seems moot. // That won't actually reflect in the query response, so it seems moot.
self.make_canonical_response(Certainty::AMBIGUOUS) self.make_canonical_response(Certainty::AMBIGUOUS)
} else { } else {
self.infcx.probe(|_| { let InferOk { value: (), obligations } = self
let InferOk { value: (), obligations } = self .infcx
.infcx .at(&ObligationCause::dummy(), goal.param_env)
.at(&ObligationCause::dummy(), goal.param_env) .sub(goal.predicate.a, goal.predicate.b)?;
.sub(goal.predicate.a, goal.predicate.b)?; self.evaluate_all_and_make_canonical_response(
self.evaluate_all_and_make_canonical_response( obligations.into_iter().map(|pred| pred.into()).collect(),
obligations.into_iter().map(|pred| pred.into()).collect(), )
)
})
} }
} }
@ -378,18 +376,16 @@ impl<'a, 'tcx> EvalCtxt<'a, 'tcx> {
&mut self, &mut self,
goal: Goal<'tcx, ty::GenericArg<'tcx>>, goal: Goal<'tcx, ty::GenericArg<'tcx>>,
) -> QueryResult<'tcx> { ) -> QueryResult<'tcx> {
self.infcx.probe(|_| { match crate::traits::wf::unnormalized_obligations(
match crate::traits::wf::unnormalized_obligations( self.infcx,
self.infcx, goal.param_env,
goal.param_env, goal.predicate,
goal.predicate, ) {
) { Some(obligations) => self.evaluate_all_and_make_canonical_response(
Some(obligations) => self.evaluate_all_and_make_canonical_response( obligations.into_iter().map(|o| o.into()).collect(),
obligations.into_iter().map(|o| o.into()).collect(), ),
), None => self.make_canonical_response(Certainty::AMBIGUOUS),
None => self.make_canonical_response(Certainty::AMBIGUOUS), }
}
})
} }
} }