summaryrefslogtreecommitdiffstats
path: root/clang/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
commit7a147c6a3ce30ecb26f8dfbd98c5c420cd5cfc96 (patch)
treed3770d38f8edf0a7d2d9a3cc61c275eead98a0cf /clang/lib/Parse/ParseExpr.cpp
parent3fccede02a53dce6278f5adabfffac8e74260115 (diff)
downloadbcm5719-llvm-7a147c6a3ce30ecb26f8dfbd98c5c420cd5cfc96.tar.gz
bcm5719-llvm-7a147c6a3ce30ecb26f8dfbd98c5c420cd5cfc96.zip
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. llvm-svn: 56257
Diffstat (limited to 'clang/lib/Parse/ParseExpr.cpp')
-rw-r--r--clang/lib/Parse/ParseExpr.cpp16
1 files changed, 2 insertions, 14 deletions
diff --git a/clang/lib/Parse/ParseExpr.cpp b/clang/lib/Parse/ParseExpr.cpp
index b532078d40c..64f31ddbc80 100644
--- a/clang/lib/Parse/ParseExpr.cpp
+++ b/clang/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;
}
OpenPOWER on IntegriCloud