[cfe-commits] r68932 - in /cfe/trunk: lib/Parse/ParseExpr.cpp test/Parser/expressions.c
Chris Lattner
sabre at nondot.org
Sun Apr 12 17:10:40 PDT 2009
Author: lattner
Date: Sun Apr 12 19:10:38 2009
New Revision: 68932
URL: http://llvm.org/viewvc/llvm-project?rev=68932&view=rev
Log:
Improve error recovery for calls, fixing:
PR3972: Poor diagnostic with missing ')'
Modified:
cfe/trunk/lib/Parse/ParseExpr.cpp
cfe/trunk/test/Parser/expressions.c
Modified: cfe/trunk/lib/Parse/ParseExpr.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseExpr.cpp?rev=68932&r1=68931&r2=68932&view=diff
==============================================================================
--- cfe/trunk/lib/Parse/ParseExpr.cpp (original)
+++ cfe/trunk/lib/Parse/ParseExpr.cpp Sun Apr 12 19:10:38 2009
@@ -851,15 +851,20 @@
}
// Match the ')'.
- if (!LHS.isInvalid() && Tok.is(tok::r_paren)) {
+ if (Tok.isNot(tok::r_paren)) {
+ MatchRHSPunctuation(tok::r_paren, Loc);
+ return ExprError();
+ }
+
+ if (!LHS.isInvalid()) {
assert((ArgExprs.size() == 0 || ArgExprs.size()-1 == CommaLocs.size())&&
"Unexpected number of commas!");
LHS = Actions.ActOnCallExpr(CurScope, move(LHS), Loc,
move_arg(ArgExprs), &CommaLocs[0],
Tok.getLocation());
}
-
- MatchRHSPunctuation(tok::r_paren, Loc);
+
+ ConsumeParen();
break;
}
case tok::arrow: // postfix-expression: p-e '->' identifier
Modified: cfe/trunk/test/Parser/expressions.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Parser/expressions.c?rev=68932&r1=68931&r2=68932&view=diff
==============================================================================
--- cfe/trunk/test/Parser/expressions.c (original)
+++ cfe/trunk/test/Parser/expressions.c Sun Apr 12 19:10:38 2009
@@ -1,4 +1,4 @@
-// RUN: clang-cc -parse-noop %s
+// RUN: clang-cc -parse-noop -verify %s
void test1() {
if (sizeof (int){ 1}); // sizeof compound literal
@@ -41,3 +41,10 @@
__extension__ (*(char*)0) = 1;
}
+// PR3972
+int test5(int);
+int test6(void) {
+ return test5( // expected-note {{to match}}
+ test5(1)
+ ; // expected-error {{expected ')'}}
+}
More information about the cfe-commits
mailing list