[AST][RecoveryExpr] Don't perform early typo correction in C.
The dependent mechanism for C error-recovery is mostly finished, this is the only place we have missed. Differential Revision: https://reviews.llvm.org/D89045
This commit is contained in:
parent
bb406f36dc
commit
8852d30b1c
|
@ -8494,7 +8494,7 @@ ExprResult Sema::ActOnConditionalOp(SourceLocation QuestionLoc,
|
|||
SourceLocation ColonLoc,
|
||||
Expr *CondExpr, Expr *LHSExpr,
|
||||
Expr *RHSExpr) {
|
||||
if (!getLangOpts().CPlusPlus) {
|
||||
if (!Context.isDependenceAllowed()) {
|
||||
// C cannot handle TypoExpr nodes in the condition because it
|
||||
// doesn't handle dependent types properly, so make sure any TypoExprs have
|
||||
// been dealt with before checking the operands.
|
||||
|
|
|
@ -24,14 +24,10 @@ int postfix_inc = a++;
|
|||
int unary_address = &(a + 1);
|
||||
|
||||
// CHECK: VarDecl {{.*}} ternary 'int' cinit
|
||||
// CHECK-NEXT: `-RecoveryExpr {{.*}}
|
||||
// CHECK-NEXT: `-ConditionalOperator {{.*}}
|
||||
// CHECK-NEXT: |-DeclRefExpr {{.*}} 'a'
|
||||
// CHECK-NEXT: |-TypoExpr {{.*}}
|
||||
// CHECK-NEXT: |-RecoveryExpr {{.*}}
|
||||
// CHECK-NEXT: `-DeclRefExpr {{.*}} 'a'
|
||||
// FIXME: The TypoExpr should never be print, and should be downgraded to
|
||||
// RecoveryExpr -- typo correction is performed too early in C-only codepath,
|
||||
// which makes no correction when clang finishes the full expr (Sema::Sema::ActOnFinishFullExpr).
|
||||
// this will be fixed when we support dependent mechanism and delayed typo correction for C.
|
||||
int ternary = a ? undef : a;
|
||||
|
||||
void test1() {
|
||||
|
|
Loading…
Reference in New Issue