]> granicus.if.org Git - clang/commitdiff
clang-format: Recognize more ObjC blocks with parameters/return type.
authorDaniel Jasper <djasper@google.com>
Fri, 28 Mar 2014 07:48:59 +0000 (07:48 +0000)
committerDaniel Jasper <djasper@google.com>
Fri, 28 Mar 2014 07:48:59 +0000 (07:48 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@204990 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Format/UnwrappedLineParser.cpp
unittests/Format/FormatTest.cpp

index d863b5db0c05df48dac40b3781e158d2c8444595..204132daae391a51ba4ba3edaf8691649f51139d 100644 (file)
@@ -694,9 +694,13 @@ void UnwrappedLineParser::parseStructuralElement() {
       break;
     case tok::caret:
       nextToken();
-      if (FormatTok->is(tok::l_brace)) {
+      if (FormatTok->Tok.isAnyIdentifier() ||
+          FormatTok->isSimpleTypeSpecifier())
+        nextToken();
+      if (FormatTok->is(tok::l_paren))
+        parseParens();
+      if (FormatTok->is(tok::l_brace))
         parseChildBlock();
-      }
       break;
     case tok::l_brace:
       if (!tryToParseBracedList()) {
index 3d1e5a5d8e27cf0317f02135698b275f373deaaa..2bf55125765f3a0c20be9673456f5365b4a1fde5 100644 (file)
@@ -8125,6 +8125,10 @@ TEST_F(FormatTest, FormatsLambdas) {
 TEST_F(FormatTest, FormatsBlocks) {
   verifyFormat("int (^Block)(int, int);");
   verifyFormat("int (^Block1)(int, int) = ^(int i, int j)");
+  verifyFormat("void (^block)(int) = ^(id test) { int i; };");
+  verifyFormat("void (^block)(int) = ^(int test) { int i; };");
+  verifyFormat("void (^block)(int) = ^id(int test) { int i; };");
+  verifyFormat("void (^block)(int) = ^int(int test) { int i; };");
 
   verifyFormat("foo(^{ bar(); });");
   verifyFormat("foo(a, ^{ bar(); });");