Author: majnemer Date: Thu Feb 18 00:37:44 2016 New Revision: 261191 URL: http://llvm.org/viewvc/llvm-project?rev=261191&view=rev Log: [Parse] Make sure we don't forget to diagnose typos in exprs
If ActOn*Op fails, we will forget to diagnose typos in the LHS of expressions. Modified: cfe/trunk/lib/Parse/ParseExpr.cpp cfe/trunk/test/SemaCXX/typo-correction.cpp Modified: cfe/trunk/lib/Parse/ParseExpr.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseExpr.cpp?rev=261191&r1=261190&r2=261191&view=diff ============================================================================== --- cfe/trunk/lib/Parse/ParseExpr.cpp (original) +++ cfe/trunk/lib/Parse/ParseExpr.cpp Thu Feb 18 00:37:44 2016 @@ -431,6 +431,7 @@ Parser::ParseRHSOfBinaryExpression(ExprR } } + ExprResult OrigLHS = LHS; if (!LHS.isInvalid()) { // Combine the LHS and RHS into the LHS (e.g. build AST). if (TernaryMiddle.isInvalid()) { @@ -445,12 +446,15 @@ Parser::ParseRHSOfBinaryExpression(ExprR LHS = Actions.ActOnBinOp(getCurScope(), OpToken.getLocation(), OpToken.getKind(), LHS.get(), RHS.get()); - } else + } else { LHS = Actions.ActOnConditionalOp(OpToken.getLocation(), ColonLoc, LHS.get(), TernaryMiddle.get(), RHS.get()); - } else { - // Ensure potential typos aren't left undiagnosed. + } + } + // Ensure potential typos aren't left undiagnosed. + if (LHS.isInvalid()) { + Actions.CorrectDelayedTyposInExpr(OrigLHS); Actions.CorrectDelayedTyposInExpr(TernaryMiddle); Actions.CorrectDelayedTyposInExpr(RHS); } Modified: cfe/trunk/test/SemaCXX/typo-correction.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/typo-correction.cpp?rev=261191&r1=261190&r2=261191&view=diff ============================================================================== --- cfe/trunk/test/SemaCXX/typo-correction.cpp (original) +++ cfe/trunk/test/SemaCXX/typo-correction.cpp Thu Feb 18 00:37:44 2016 @@ -665,3 +665,8 @@ using C::D::Foofoo; // expected-error { } int d = ? L : d; // expected-error {{expected expression}} expected-error {{undeclared identifier}} + +struct B0 { + int : 0 | // expected-error {{invalid operands to binary expression}} + (struct B0)e; // expected-error {{use of undeclared identifier}} +}; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits