================
@@ -1514,7 +1514,8 @@ Sema::ActOnCXXTypeConstructExpr(ParsedType TypeRep,
RParenOrBraceLoc,
ListInitialization);
if (Result.isInvalid())
Result = CreateRecoveryExpr(TInfo->getTypeLoc().getBeginLoc(),
- RParenOrBraceLoc, exprs, Ty);
+ RParenOrBraceLoc, exprs,
Ty->isIncompleteType() ? QualType() : Ty);
----------------
erichkeane wrote:
I don't think that condition is the right one, just bypassing the assert is
incorrect. I don't particularly understand after a few minutes of debugging
the 'state' teh compiler is in, that is a bit of a 'nonsense' reproducer as it
is from a fuzzer.
That said, I would probably look at:
`Sema::ActOnStartCXXMemberReference`. This is where we get the type out of
the expression. I note that if you change `enum` to `class` there, we fall
down a different path and end up returning `ExprError` from that function, so
we probably want to do something similar., perhaps around 7050. At that point,
we can check `Base->containsError()`, mixed with `isIncomplete` and skip the
`MayBePseudoDestructor`?
Probably should spend some time debugging in that area, but th at is where I
would immediately look.
https://github.com/llvm/llvm-project/pull/191972
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits