From dffb1fd109ac7c164d27acb06abb985513ec34ff Mon Sep 17 00:00:00 2001 From: Jacek Olesiak Date: Wed, 30 May 2018 12:57:58 +0000 Subject: [PATCH] Revert "[clang-format] Fix putting ObjC message arguments in one line for multiline receiver" Summary: This reverts commit db9e5e9a616d7fdd4d1ba4c3b2cd89d8a0238533 (rC333171). Mentioned change introduced unintended formatting of ObjC code due to split priorities inherited from C/C++, e.g.: ``` fooooooo = [ [obj fooo] aaa:42 aaa:42]; ``` instead of ``` fooooooo = [[obj fooo] aaa:42 aaa:42]; ``` when formatted with ColumnLimit = 30. Reviewers: krasimir Reviewed By: krasimir Subscribers: benhamilton, klimek, cfe-commits Differential Revision: https://reviews.llvm.org/D47527 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@333539 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Format/ContinuationIndenter.cpp | 23 ------------------- unittests/Format/FormatTestObjC.cpp | 35 ----------------------------- 2 files changed, 58 deletions(-) diff --git a/lib/Format/ContinuationIndenter.cpp b/lib/Format/ContinuationIndenter.cpp index ac871471d9..eacdfdc6e0 100644 --- a/lib/Format/ContinuationIndenter.cpp +++ b/lib/Format/ContinuationIndenter.cpp @@ -1387,29 +1387,6 @@ void ContinuationIndenter::moveStatePastScopeCloser(LineState &State) { (Current.is(tok::greater) && Current.is(TT_DictLiteral)))) State.Stack.pop_back(); - // Reevaluate whether ObjC message arguments fit into one line. - // If a receiver spans multiple lines, e.g.: - // [[object block:^{ - // return 42; - // }] a:42 b:42]; - // BreakBeforeParameter is calculated based on an incorrect assumption - // (it is checked whether the whole expression fits into one line without - // considering a line break inside a message receiver). - // We check whether arguements fit after receiver scope closer (into the same - // line). - if (Current.MatchingParen && Current.MatchingParen->Previous) { - const FormatToken &CurrentScopeOpener = *Current.MatchingParen->Previous; - if (CurrentScopeOpener.is(TT_ObjCMethodExpr) && - CurrentScopeOpener.MatchingParen) { - int NecessarySpaceInLine = - getLengthToMatchingParen(CurrentScopeOpener, State.Stack) + - CurrentScopeOpener.TotalLength - Current.TotalLength - 1; - if (State.Column + Current.ColumnWidth + NecessarySpaceInLine <= - Style.ColumnLimit) - State.Stack.back().BreakBeforeParameter = false; - } - } - if (Current.is(tok::r_square)) { // If this ends the array subscript expr, reset the corresponding value. const FormatToken *NextNonComment = Current.getNextNonComment(); diff --git a/unittests/Format/FormatTestObjC.cpp b/unittests/Format/FormatTestObjC.cpp index 43510c4279..c29c9d702b 100644 --- a/unittests/Format/FormatTestObjC.cpp +++ b/unittests/Format/FormatTestObjC.cpp @@ -796,41 +796,6 @@ TEST_F(FormatTestObjC, FormatObjCMethodExpr) { verifyFormat("[((Foo *)foo) bar];"); verifyFormat("[((Foo *)foo) bar:1 blech:2];"); - // Message receiver taking multiple lines. - Style.ColumnLimit = 20; - // Non-corner case. - verifyFormat("[[object block:^{\n" - " return 42;\n" - "}] a:42 b:42];"); - // Arguments just fit into one line. - verifyFormat("[[object block:^{\n" - " return 42;\n" - "}] aaaaaaa:42 b:42];"); - // Arguments just over a column limit. - verifyFormat("[[object block:^{\n" - " return 42;\n" - "}] aaaaaaa:42\n" - " bb:42];"); - // Arguments just fit into one line. - Style.ColumnLimit = 23; - verifyFormat("[[obj a:42\n" - " b:42\n" - " c:42\n" - " d:42] e:42 f:42];"); - - // Arguments do not fit into one line with a receiver. - Style.ColumnLimit = 20; - verifyFormat("[[obj a:42] a:42\n" - " b:42];"); - verifyFormat("[[obj a:42] a:42\n" - " b:42\n" - " c:42];"); - verifyFormat("[[obj aaaaaa:42\n" - " b:42]\n" - " cc:42\n" - " d:42];"); - - Style.ColumnLimit = 70; verifyFormat( "void f() {\n" -- 2.40.0