diff options
| author | Chris Lattner <sabre@nondot.org> | 2008-12-12 06:00:12 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2008-12-12 06:00:12 +0000 |
| commit | d8980509b34da2399b197fc0bd01cd20ee16918b (patch) | |
| tree | 9286eeba6984cebb6fd2cdb3a839b59ffe8582f1 | |
| parent | dca17ceb19a4537b5b1510cdbcbc41577a27bb9d (diff) | |
| download | bcm5719-llvm-d8980509b34da2399b197fc0bd01cd20ee16918b.tar.gz bcm5719-llvm-d8980509b34da2399b197fc0bd01cd20ee16918b.zip | |
minor refactoring of ParseParenExpression
llvm-svn: 60928
| -rw-r--r-- | clang/lib/Parse/ParseExpr.cpp | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/clang/lib/Parse/ParseExpr.cpp b/clang/lib/Parse/ParseExpr.cpp index ac3a46a0014..b18d5053649 100644 --- a/clang/lib/Parse/ParseExpr.cpp +++ b/clang/lib/Parse/ParseExpr.cpp @@ -1062,34 +1062,37 @@ Parser::ParseParenExpression(ParenParseOption &ExprType, if (!Result.isInvalid()) return Owned(Actions.ActOnCompoundLiteral(OpenLoc, Ty, RParenLoc, Result.release())); - } else if (ExprType == CastExpr) { + return move(Result); + } + + if (ExprType == CastExpr) { // Note that this doesn't parse the subsequence cast-expression, it just // returns the parsed type to the callee. ExprType = CastExpr; CastTy = Ty; return OwningExprResult(Actions); - } else { - Diag(Tok, diag::err_expected_lbrace_in_compound_literal); - return ExprError(); } - return move(Result); + + Diag(Tok, diag::err_expected_lbrace_in_compound_literal); + return ExprError(); } else { Result = ParseExpression(); ExprType = SimpleExpr; if (!Result.isInvalid() && Tok.is(tok::r_paren)) - Result = Actions.ActOnParenExpr( - OpenLoc, Tok.getLocation(), Result.release()); + Result = Actions.ActOnParenExpr(OpenLoc, Tok.getLocation(), + Result.release()); } // Match the ')'. - if (Result.isInvalid()) + if (Result.isInvalid()) { SkipUntil(tok::r_paren); - else { - if (Tok.is(tok::r_paren)) - RParenLoc = ConsumeParen(); - else - MatchRHSPunctuation(tok::r_paren, OpenLoc); + return ExprError(); } + + if (Tok.is(tok::r_paren)) + RParenLoc = ConsumeParen(); + else + MatchRHSPunctuation(tok::r_paren, OpenLoc); return move(Result); } |

