Err(OverflowError) => {
let mut selcx =
SelectionContext::with_query_mode(&self, TraitQueryMode::Standard);
- selcx.evaluate_obligation_recursively(obligation)
+ selcx.evaluate_root_obligation(obligation)
.unwrap_or_else(|r| {
span_bug!(
obligation.cause.span,
// where we do not expect overflow to be propagated.
assert!(self.query_mode == TraitQueryMode::Standard);
- self.evaluate_obligation_recursively(obligation)
+ self.evaluate_root_obligation(obligation)
.expect("Overflow should be caught earlier in standard query mode")
.may_apply()
}
- /// Evaluates whether the obligation `obligation` can be satisfied and returns
- /// an `EvaluationResult`.
- pub fn evaluate_obligation_recursively(
+ /// Evaluates whether the obligation `obligation` can be satisfied
+ /// and returns an `EvaluationResult`. This is meant for the
+ /// *initial* call.
+ pub fn evaluate_root_obligation(
&mut self,
obligation: &PredicateObligation<'tcx>,
) -> Result<EvaluationResult, OverflowError> {
let mut selcx = SelectionContext::with_query_mode(&infcx, TraitQueryMode::Canonical);
let obligation = Obligation::new(ObligationCause::dummy(), param_env, predicate);
- selcx.evaluate_obligation_recursively(&obligation)
+ selcx.evaluate_root_obligation(&obligation)
},
)
}