Revert "[clang-format] Fix putting ObjC message arguments in one line for multiline receiver"

Summary: Reverts D46879

Reviewers: benhamilton

Reviewed By: benhamilton

Subscribers: krasimir, klimek, cfe-commits

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

llvm-svn: 332998
This commit is contained in:
Jacek Olesiak 2018-05-22 16:44:42 +00:00
parent 4c7763eb2f
commit f51ce777e3
2 changed files with 1 additions and 56 deletions

View File

@ -1073,34 +1073,8 @@ unsigned ContinuationIndenter::moveStateToNextToken(LineState &State,
if (Current.isMemberAccess())
State.Stack.back().StartOfFunctionCall =
!Current.NextOperator ? 0 : State.Column;
if (Current.is(TT_SelectorName) &&
!State.Stack.back().ObjCSelectorNameFound) {
if (Current.is(TT_SelectorName))
State.Stack.back().ObjCSelectorNameFound = true;
// 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).
if (Current.Previous && Current.Previous->closesScope() &&
Current.Previous->MatchingParen &&
Current.Previous->MatchingParen->Previous) {
const FormatToken &CurrentScopeOpener =
*Current.Previous->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(TT_CtorInitializerColon) &&
Style.BreakConstructorInitializers != FormatStyle::BCIS_AfterColon) {
// Indent 2 from the column, so:

View File

@ -796,35 +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];");
// Non-corner case.
verifyFormat("[[object aaa:42\n"
" b:42]\n"
" cc:42 d:42];");
// Arguments just fit into one line.
verifyFormat("[[object aaa:42\n"
" b:42]\n"
" cccccc:42 d:42];");
// Arguments just over a column limit.
verifyFormat("[[object aaa:42\n"
" b:42]\n"
" cccccc:42\n"
" dd:42];");
Style.ColumnLimit = 70;
verifyFormat(
"void f() {\n"