aboutsummaryrefslogtreecommitdiff
path: root/lib/Parse/ParseExpr.cpp
diff options
context:
space:
mode:
authorSteve Naroff <snaroff@apple.com>2008-09-16 23:11:46 +0000
committerSteve Naroff <snaroff@apple.com>2008-09-16 23:11:46 +0000
commit17dab4f616db7be6800c1f0505f4888d2e8ad7a2 (patch)
tree96aa81b9cd4efd1dfcbc02ce4e30dd560c06d605 /lib/Parse/ParseExpr.cpp
parentc50a4a5f2eac14ac4c631d50b0a55cadc87700ce (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.cpp16
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;
}