forked from OSchip/llvm-project
clang-format: fix formatting of ObjC @synchronized blocks
Summary: The blocks used to be formatted using the "default" behavior, and would thus be mistaken for function calls followed by blocks: this could lead to unexpected inlining of the block and extra line-break before the opening brace. They are now formatted similarly to `@autoreleasepool` blocks, as expected: @synchronized(self) { f(); } Reviewers: krasimir, djasper, klimek Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D43114 llvm-svn: 326191
This commit is contained in:
parent
ba43ec8702
commit
ba91c3de38
|
@ -1135,6 +1135,18 @@ void UnwrappedLineParser::parseStructuralElement() {
|
|||
}
|
||||
addUnwrappedLine();
|
||||
return;
|
||||
case tok::objc_synchronized:
|
||||
nextToken();
|
||||
if (FormatTok->Tok.is(tok::l_paren))
|
||||
// Skip synchronization object
|
||||
parseParens();
|
||||
if (FormatTok->Tok.is(tok::l_brace)) {
|
||||
if (Style.BraceWrapping.AfterObjCDeclaration)
|
||||
addUnwrappedLine();
|
||||
parseBlock(/*MustBeDeclaration=*/false);
|
||||
}
|
||||
addUnwrappedLine();
|
||||
return;
|
||||
case tok::objc_try:
|
||||
// This branch isn't strictly necessary (the kw_try case below would
|
||||
// do this too after the tok::at is parsed above). But be explicit.
|
||||
|
|
|
@ -209,6 +209,24 @@ TEST_F(FormatTestObjC, FormatObjCGenerics) {
|
|||
" aaaaaaaaaaaaaaaaa);\n");
|
||||
}
|
||||
|
||||
TEST_F(FormatTestObjC, FormatObjCSynchronized) {
|
||||
verifyFormat("@synchronized(self) {\n"
|
||||
" f();\n"
|
||||
"}\n"
|
||||
"@synchronized(self) {\n"
|
||||
" f();\n"
|
||||
"}\n");
|
||||
Style.BreakBeforeBraces = FormatStyle::BS_Allman;
|
||||
verifyFormat("@synchronized(self)\n"
|
||||
"{\n"
|
||||
" f();\n"
|
||||
"}\n"
|
||||
"@synchronized(self)\n"
|
||||
"{\n"
|
||||
" f();\n"
|
||||
"}\n");
|
||||
}
|
||||
|
||||
TEST_F(FormatTestObjC, FormatObjCInterface) {
|
||||
verifyFormat("@interface Foo : NSObject <NSSomeDelegate> {\n"
|
||||
"@public\n"
|
||||
|
|
Loading…
Reference in New Issue