1
Fork 0

Rollup merge of #108901 - LYF1999:yf/108897, r=lcnr

fix: evaluate with wrong obligation stack

fix #108897
r? ``@lcnr``
This commit is contained in:
Matthias Krüger 2023-03-08 21:24:53 +01:00 committed by GitHub
commit 33c3036826
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 47 additions and 2 deletions

View file

@ -1083,7 +1083,7 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
let mut nested_result = EvaluationResult::EvaluatedToOk;
for obligation in nested_obligations {
nested_result = cmp::max(
this.evaluate_predicate_recursively(stack.list(), obligation)?,
this.evaluate_predicate_recursively(previous_stack, obligation)?,
nested_result,
);
}
@ -1092,7 +1092,7 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
let obligation = obligation.with(this.tcx(), predicate);
result = cmp::max(
nested_result,
this.evaluate_trait_predicate_recursively(stack.list(), obligation)?,
this.evaluate_trait_predicate_recursively(previous_stack, obligation)?,
);
}
}