================
@@ -1510,7 +1510,7 @@ static void CheckFoldOperand(Sema &S, Expr *E) {
   E = E->IgnoreImpCasts();
   auto *OCE = dyn_cast<CXXOperatorCallExpr>(E);
   if ((OCE && OCE->isInfixBinaryOp()) || isa<BinaryOperator>(E) ||
-      isa<AbstractConditionalOperator>(E)) {
+      isa<AbstractConditionalOperator>(E) || isa<RecoveryExpr>(E)) {
----------------
Sirraide wrote:

> IIUC the frontend produces a RecoveryExpr on semantic errors that prevent 
> forming well formed statements. In that case should it be always generated in 
> case of semantic errors? Can you point an example where it is not always 
> generated.

`RecoveryExpr`s are only created if they’re enabled by some flag 
(`-frecovery-ast` iirc), otherwise, you just get `ExprError()`:
https://github.com/llvm/llvm-project/blob/f42e58f61680e325555f382cab5115c54df6f6df/clang/lib/Sema/SemaExpr.cpp#L21591-L21594

https://github.com/llvm/llvm-project/pull/164019
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to