diff options
| -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(); });"); |

