]> granicus.if.org Git - clang/commitdiff
[clang-format] Fix BraceWrapping AfterFunction for ObjC methods
authorBen Hamilton <benhamilton@google.com>
Fri, 12 Oct 2018 19:43:01 +0000 (19:43 +0000)
committerBen Hamilton <benhamilton@google.com>
Fri, 12 Oct 2018 19:43:01 +0000 (19:43 +0000)
Summary:
> clang-format --version
> clang-format version 7.0.0 (tags/RELEASE_700/final)
> echo "@implementation Foo\n- (void)foo:(id)bar\n{\n}\n@end\n" |clang-format -style='{BreakBeforeBraces: Custom, BraceWrapping: {AfterFunction: true}}'
```
@implementation Foo
- (void)foo:(id)bar {
}
@end
```

with patch:

> bin/clang-format --version
> clang-format version 8.0.0 (trunk 344285)
> echo "@implementation Foo\n- (void)foo:(id)bar\n{\n}\n@end\n" |bin/clang-format -style='{BreakBeforeBraces: Custom, BraceWrapping: {AfterFunction: true}}'
```
@implementation Foo
- (void)foo:(id)bar
{
}
@end
```

Contributed by hultman@.

Reviewers: benhamilton, jolesiak, klimek, Wizard

Reviewed By: benhamilton

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D53197

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@344406 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Format/UnwrappedLineParser.cpp
unittests/Format/FormatTestObjC.cpp

index 6c81d8b60e95aa1d6858a98b6065fd03fe4f3608..4debdd15ba7c5ed90d811073f0398e3ace81b2ac 100644 (file)
@@ -2164,6 +2164,8 @@ void UnwrappedLineParser::parseObjCMethod() {
       addUnwrappedLine();
       return;
     } else if (FormatTok->Tok.is(tok::l_brace)) {
+      if (Style.BraceWrapping.AfterFunction)
+        addUnwrappedLine();
       parseBlock(/*MustBeDeclaration=*/false);
       addUnwrappedLine();
       return;
index e56df6d130d25de7a3a8fb24214a3dd93bc2bcbb..a417b6710da2664b3688f5d9cfd7342872fc3b63 100644 (file)
@@ -584,6 +584,16 @@ TEST_F(FormatTestObjC, FormatObjCMethodDeclarations) {
                "             aaaaa:(a)yyy\n"
                "               bbb:(d)cccc;");
   verifyFormat("- (void)drawRectOn:(id)surface ofSize:(aaa)height:(bbb)width;");
+
+  // BraceWrapping AfterFunction is respected for ObjC methods 
+  Style = getGoogleStyle(FormatStyle::LK_ObjC);
+  Style.BreakBeforeBraces = FormatStyle::BS_Custom;
+  Style.BraceWrapping.AfterFunction = true;
+  verifyFormat("@implementation Foo\n"
+               "- (void)foo:(id)bar\n"
+               "{\n"
+               "}\n"
+               "@end\n");
 }
 
 TEST_F(FormatTestObjC, FormatObjCMethodExpr) {