[stable] Fix CVE 2022 21658 and prepare 1.58.1 by pietroalbini · Pull Request #93110 · rust-lang/rust (original) (raw)

Prior to PR rust-lang#91205, checking for errors in the overall obligation would check checking the ParamEnv, due to an incorrect super_visit_with impl. With this bug fixed, we will now bail out of impl candidate assembly if the ParamEnv contains any error types.

In practice, this appears to be overly conservative - when an error occurs early in compilation, we end up giving up early for some predicates that we could have successfully evaluated without overflow. By only checking for errors in the predicate itself, we avoid causing additional spurious 'type annotations needed' errors after a 'real' error has already occurred.

With this PR, the diagnostic changes caused by PR rust-lang#91205 are reverted.