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
diff --git a/lib/Parse/ParseExpr.cpp b/lib/Parse/ParseExpr.cpp
index b532078..64f31dd 100644
--- a/lib/Parse/ParseExpr.cpp
+++ b/lib/Parse/ParseExpr.cpp
@@ -1077,11 +1077,10 @@
}
/// 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 @@
// 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;
}