1
Fork 0

Do not abort compilation when failing to normalize opaque types.

This commit is contained in:
Camille GILLOT 2022-09-11 11:22:47 +02:00
parent 7919ef0ec5
commit caefec955f
2 changed files with 43 additions and 11 deletions

View file

@ -216,12 +216,16 @@ impl<'cx, 'tcx> FallibleTypeFolder<'tcx> for QueryNormalizer<'cx, 'tcx> {
let substs = substs.try_fold_with(self)?;
let recursion_limit = self.tcx().recursion_limit();
if !recursion_limit.value_within_limit(self.anon_depth) {
self.infcx.err_ctxt().report_overflow_error(
&ty,
self.cause.span,
true,
|_| {},
);
// A closure or generator may have itself as in its upvars. This
// should be checked handled by the recursion check for opaque types,
// but we may end up here before that check can happen. In that case,
// we delay a bug to mark the trip, and continue without revealing the
// opaque.
self.infcx
.err_ctxt()
.build_overflow_error(&ty, self.cause.span, true)
.delay_as_bug();
return ty.try_super_fold_with(self);
}
let generic_ty = self.tcx().bound_type_of(def_id);