diff options
author | Chris Lattner <sabre@nondot.org> | 2009-04-13 00:10:38 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-04-13 00:10:38 +0000 |
commit | 1721a2dfc05d081e76d6dd4755d52c96e093dabc (patch) | |
tree | 36ea61c84a64f319b6fc69a194ccfc27a1dbcf8c /lib/Parse/ParseExpr.cpp | |
parent | 16ede0ec39bf72f5e696e8ed5f1533b29ac2f3d8 (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.cpp | 11 |
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 |