From 9b3cb44cd2052aa7236c38b0ccb291221aab08f9 Mon Sep 17 00:00:00 2001 From: Daniel Jasper Date: Fri, 18 Oct 2013 15:23:06 +0000 Subject: [PATCH] clang-format: Improve formatting of templated builder-type calls. Before: aaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaa().aaaaaaaaaaaaaaaaa().has< bbbbbbbbbbbbbbbbbbbbb>(); After: aaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaa() .aaaaaaaaaaaaaaaaaaaaaaaaaa() .has(); git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192981 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Format/ContinuationIndenter.cpp | 9 ++++++--- unittests/Format/FormatTest.cpp | 7 +++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/Format/ContinuationIndenter.cpp b/lib/Format/ContinuationIndenter.cpp index bbca06e6df..b0bd13b69a 100644 --- a/lib/Format/ContinuationIndenter.cpp +++ b/lib/Format/ContinuationIndenter.cpp @@ -581,9 +581,12 @@ unsigned ContinuationIndenter::moveStateToNextToken(LineState &State, Current.PackingKind == PPK_Inconclusive))); } - State.Stack.push_back( - ParenState(NewIndent, NewIndentLevel, State.Stack.back().LastSpace, - AvoidBinPacking, State.Stack.back().NoLineBreak)); + bool NoLineBreak = State.Stack.back().NoLineBreak || + (Current.Type == TT_TemplateOpener && + State.Stack.back().ContainsUnwrappedBuilder); + State.Stack.push_back(ParenState(NewIndent, NewIndentLevel, + State.Stack.back().LastSpace, + AvoidBinPacking, NoLineBreak)); State.Stack.back().BreakBeforeParameter = Current.BlockKind == BK_Block; ++State.ParenLevel; } diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp index 1e898d8f72..cf5c232481 100644 --- a/unittests/Format/FormatTest.cpp +++ b/unittests/Format/FormatTest.cpp @@ -3110,6 +3110,13 @@ TEST_F(FormatTest, FormatsBuilderPattern) { " ->aaaaaaaaaaaaaae(0)\n" " ->aaaaaaaaaaaaaaa();"); + verifyFormat("aaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaa()\n" + " .aaaaaaaaaaaaaaaaaaaaaaaaaa()\n" + " .has();"); + verifyFormat("aaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaa()\n" + " .aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa<\n" + " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa>();"); + // Prefer not to break after empty parentheses. verifyFormat("FirstToken->WhitespaceRange.getBegin().getLocWithOffset(\n" " First->LastNewlineOffset);"); -- 2.40.0