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;
 }