benhamilton created this revision. benhamilton added reviewers: krasimir, djasper, klimek. Herald added a subscriber: cfe-commits.
If we write the following code, it goes over 100 columns, so we need to wrap it: - (VeryLongReturnTypeName)veryLongMethodParameter:(VeryLongParameterName)thisIsAVeryLongParameterName longMethodParameter:(LongParameterName)thisIsAlsoAnotherLongParameterName; Currently, clang-format with the google style aligns the method parameter names on the first column: - (VeryLongReturnTypeName) veryLongMethodParameter:(VeryLongParameterName)thisIsAVeryLongParameterName longMethodParameter:(LongParameterName)thisIsAlsoAnotherLongParameterName; We'd like clang-format in the google style to align these to column 4 for Objective-C: - (VeryLongReturnTypeName) veryLongMethodParameter:(VeryLongParameterName)thisIsAVeryLongParameterName longMethodParameter:(LongParameterName)thisIsAlsoAnotherLongParameterName; Test Plan: make -j12 FormatTests && ./tools/clang/unittests/Format/FormatTests Repository: rC Clang https://reviews.llvm.org/D41195 Files: lib/Format/Format.cpp unittests/Format/FormatTestObjC.cpp Index: unittests/Format/FormatTestObjC.cpp =================================================================== --- unittests/Format/FormatTestObjC.cpp +++ unittests/Format/FormatTestObjC.cpp @@ -229,6 +229,7 @@ verifyFormat("@interface Foo (HackStuff)<MyProtocol>\n" "+ (id)init;\n" "@end"); + Style.BinPackParameters = false; Style.ColumnLimit = 80; verifyFormat("@interface aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ()<\n" @@ -382,9 +383,15 @@ " ofSize:(size_t)height\n" " :(size_t)width;"); + Style = getGoogleStyle(FormatStyle::LK_ObjC); + // Wrapped method parameters should be indented. + verifyFormat("- (VeryLongReturnTypeName)\n" + " veryLongMethodParameter:(VeryLongParameterName)" + "thisIsAVeryLongParameterName\n" + " longMethodParameter:(LongParameterName)" + "thisIsAlsoAnotherLongParameterName;"); // Continuation indent width should win over aligning colons if the function // name is long. - Style = getGoogleStyle(FormatStyle::LK_ObjC); Style.ColumnLimit = 40; Style.IndentWrappedFunctionNames = true; verifyFormat("- (void)shortf:(GTMFoo *)theFoo\n" Index: lib/Format/Format.cpp =================================================================== --- lib/Format/Format.cpp +++ lib/Format/Format.cpp @@ -732,6 +732,7 @@ GoogleStyle.SpacesInContainerLiterals = false; } else if (Language == FormatStyle::LK_ObjC) { GoogleStyle.ColumnLimit = 100; + GoogleStyle.IndentWrappedFunctionNames = true; } return GoogleStyle;
Index: unittests/Format/FormatTestObjC.cpp =================================================================== --- unittests/Format/FormatTestObjC.cpp +++ unittests/Format/FormatTestObjC.cpp @@ -229,6 +229,7 @@ verifyFormat("@interface Foo (HackStuff)<MyProtocol>\n" "+ (id)init;\n" "@end"); + Style.BinPackParameters = false; Style.ColumnLimit = 80; verifyFormat("@interface aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ()<\n" @@ -382,9 +383,15 @@ " ofSize:(size_t)height\n" " :(size_t)width;"); + Style = getGoogleStyle(FormatStyle::LK_ObjC); + // Wrapped method parameters should be indented. + verifyFormat("- (VeryLongReturnTypeName)\n" + " veryLongMethodParameter:(VeryLongParameterName)" + "thisIsAVeryLongParameterName\n" + " longMethodParameter:(LongParameterName)" + "thisIsAlsoAnotherLongParameterName;"); // Continuation indent width should win over aligning colons if the function // name is long. - Style = getGoogleStyle(FormatStyle::LK_ObjC); Style.ColumnLimit = 40; Style.IndentWrappedFunctionNames = true; verifyFormat("- (void)shortf:(GTMFoo *)theFoo\n" Index: lib/Format/Format.cpp =================================================================== --- lib/Format/Format.cpp +++ lib/Format/Format.cpp @@ -732,6 +732,7 @@ GoogleStyle.SpacesInContainerLiterals = false; } else if (Language == FormatStyle::LK_ObjC) { GoogleStyle.ColumnLimit = 100; + GoogleStyle.IndentWrappedFunctionNames = true; } return GoogleStyle;
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits