ghvg1313 created this revision. ghvg1313 added reviewers: jolesiak, benhamilton. Herald added a project: clang. Herald added a subscriber: cfe-commits.
While the original diff <https://reviews.llvm.org/D42493> makes a lot of sense, and multiple inline block parameter/trailing paramemter after inline block paramemter should be discouraged, the formatting result is different than what xcode does by default For the exact same example provided in the original diff: [object blockArgument:^{ a = 42; } anotherArg:42]; The code is hard to read and not very visually pleasing This diff uses `ObjCBreakBeforeNestedBlockParam` to shield from the formatting When it's set to false, don't allign the inline block paramemters. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D77039 Files: clang/lib/Format/ContinuationIndenter.cpp clang/unittests/Format/FormatTestObjC.cpp Index: clang/unittests/Format/FormatTestObjC.cpp =================================================================== --- clang/unittests/Format/FormatTestObjC.cpp +++ clang/unittests/Format/FormatTestObjC.cpp @@ -1420,6 +1420,10 @@ "*b, NSNumber *c) {\n" " b = c;\n" "}]"); + verifyFormat("[self.test1 t:self w:self callback:^(typeof(self) self, " + "NSNumber *u, NSNumber *v) {\n" + " u = v;\n" + "} z:self]"); Style.ColumnLimit = 80; verifyFormat( Index: clang/lib/Format/ContinuationIndenter.cpp =================================================================== --- clang/lib/Format/ContinuationIndenter.cpp +++ clang/lib/Format/ContinuationIndenter.cpp @@ -342,6 +342,7 @@ if (Previous.is(tok::semi) && State.LineContainsContinuedForLoopSection) return true; if (Style.Language == FormatStyle::LK_ObjC && + Style.ObjCBreakBeforeNestedBlockParam && Current.ObjCSelectorNameParts > 1 && Current.startsSequence(TT_SelectorName, tok::colon, tok::caret)) { return true;
Index: clang/unittests/Format/FormatTestObjC.cpp =================================================================== --- clang/unittests/Format/FormatTestObjC.cpp +++ clang/unittests/Format/FormatTestObjC.cpp @@ -1420,6 +1420,10 @@ "*b, NSNumber *c) {\n" " b = c;\n" "}]"); + verifyFormat("[self.test1 t:self w:self callback:^(typeof(self) self, " + "NSNumber *u, NSNumber *v) {\n" + " u = v;\n" + "} z:self]"); Style.ColumnLimit = 80; verifyFormat( Index: clang/lib/Format/ContinuationIndenter.cpp =================================================================== --- clang/lib/Format/ContinuationIndenter.cpp +++ clang/lib/Format/ContinuationIndenter.cpp @@ -342,6 +342,7 @@ if (Previous.is(tok::semi) && State.LineContainsContinuedForLoopSection) return true; if (Style.Language == FormatStyle::LK_ObjC && + Style.ObjCBreakBeforeNestedBlockParam && Current.ObjCSelectorNameParts > 1 && Current.startsSequence(TT_SelectorName, tok::colon, tok::caret)) { return true;
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits