diff options
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/lib/Format/UnwrappedLineParser.cpp | 8 | ||||
| -rw-r--r-- | clang/unittests/Format/FormatTest.cpp | 4 | 
2 files changed, 10 insertions, 2 deletions
diff --git a/clang/lib/Format/UnwrappedLineParser.cpp b/clang/lib/Format/UnwrappedLineParser.cpp index d863b5db0c0..204132daae3 100644 --- a/clang/lib/Format/UnwrappedLineParser.cpp +++ b/clang/lib/Format/UnwrappedLineParser.cpp @@ -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()) { diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index 3d1e5a5d8e2..2bf55125765 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -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(); });");  | 

