diff options
author | Steve Naroff <snaroff@apple.com> | 2008-09-16 23:11:46 +0000 |
---|---|---|
committer | Steve Naroff <snaroff@apple.com> | 2008-09-16 23:11:46 +0000 |
commit | 17dab4f616db7be6800c1f0505f4888d2e8ad7a2 (patch) | |
tree | 96aa81b9cd4efd1dfcbc02ce4e30dd560c06d605 /lib/Parse/ParseExpr.cpp | |
parent | c50a4a5f2eac14ac4c631d50b0a55cadc87700ce (diff) |
Remove support for BlockExprExpr. For example...
^(expression) or ^(int arg1, float arg2)(expression)
...is no longer supported.
All block literals now require a compound statement.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56257 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Parse/ParseExpr.cpp')
-rw-r--r-- | lib/Parse/ParseExpr.cpp | 16 |
1 files changed, 2 insertions, 14 deletions
diff --git a/lib/Parse/ParseExpr.cpp b/lib/Parse/ParseExpr.cpp index b532078d40..64f31ddbc8 100644 --- a/lib/Parse/ParseExpr.cpp +++ b/lib/Parse/ParseExpr.cpp @@ -1077,11 +1077,10 @@ bool Parser::ParseExpressionList(ExprListTy &Exprs, CommaLocsTy &CommaLocs) { } /// ParseBlockLiteralExpression - Parse a block literal, which roughly looks -/// like ^(int x){ return x+1; } or ^(int y)foo(4, y, z) +/// like ^(int x){ return x+1; } /// /// block-literal: /// [clang] '^' block-args[opt] compound-statement -/// [clang] '^' block-args cast-expression /// [clang] block-args: /// [clang] '(' parameter-list ')' /// @@ -1122,26 +1121,15 @@ Parser::ExprResult Parser::ParseBlockLiteralExpression() { // Inform sema that we are starting a block. Actions.ActOnBlockStart(CaretLoc, CurScope, ParamInfo); - ExprResult Result; + ExprResult Result = true; if (Tok.is(tok::l_brace)) { StmtResult Stmt = ParseCompoundStatementBody(); if (!Stmt.isInvalid) { Result = Actions.ActOnBlockStmtExpr(CaretLoc, Stmt.Val, CurScope); } else { Actions.ActOnBlockError(CaretLoc, CurScope); - Result = true; - } - } else { - ExprResult Expr = ParseCastExpression(false); - if (!Expr.isInvalid) { - Result = Actions.ActOnBlockExprExpr(CaretLoc, Expr.Val, CurScope); - } else { - Actions.ActOnBlockError(CaretLoc, CurScope); - Diag(Tok, diag::err_expected_block_lbrace); - Result = true; } } - ExitScope(); return Result; } |