aboutsummaryrefslogtreecommitdiff
path: root/lib/Parse/ParseExpr.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-04-13 00:10:38 +0000
committerChris Lattner <sabre@nondot.org>2009-04-13 00:10:38 +0000
commit1721a2dfc05d081e76d6dd4755d52c96e093dabc (patch)
tree36ea61c84a64f319b6fc69a194ccfc27a1dbcf8c /lib/Parse/ParseExpr.cpp
parent16ede0ec39bf72f5e696e8ed5f1533b29ac2f3d8 (diff)
Improve error recovery for calls, fixing:
PR3972: Poor diagnostic with missing ')' git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68932 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Parse/ParseExpr.cpp')
-rw-r--r--lib/Parse/ParseExpr.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/Parse/ParseExpr.cpp b/lib/Parse/ParseExpr.cpp
index 6713ca920e..ebba576643 100644
--- a/lib/Parse/ParseExpr.cpp
+++ b/lib/Parse/ParseExpr.cpp
@@ -851,15 +851,20 @@ Parser::ParsePostfixExpressionSuffix(OwningExprResult LHS) {
}
// 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