]> granicus.if.org Git - clang/commitdiff
clang-format: Improve formatting of nested builder-type calls.
authorDaniel Jasper <djasper@google.com>
Mon, 25 Aug 2014 08:48:17 +0000 (08:48 +0000)
committerDaniel Jasper <djasper@google.com>
Mon, 25 Aug 2014 08:48:17 +0000 (08:48 +0000)
Before:
  f(FirstToken->WhitespaceRange.getBegin().getLocWithOffset(
      First->LastNewlineOffset));

After:
  f(FirstToken->WhitespaceRange.getBegin()
        .getLocWithOffset(First->LastNewlineOffset));

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216377 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Format/ContinuationIndenter.cpp
unittests/Format/FormatTest.cpp

index 9088de23571eccd37b2d40ab0fb21d9f9cf1212f..828e7507626892fbce390b4d72cd2bfe280502a3 100644 (file)
@@ -854,9 +854,10 @@ void ContinuationIndenter::moveStatePastScopeOpener(LineState &State,
             getColumnLimit(State))
       BreakBeforeParameter = true;
   }
-  bool NoLineBreak = State.Stack.back().NoLineBreak ||
-                     (Current.Type == TT_TemplateOpener &&
-                      State.Stack.back().ContainsUnwrappedBuilder);
+  bool NoLineBreak =
+      State.Stack.back().NoLineBreak ||
+      ((Current.NestingLevel != 0 || Current.Type == TT_TemplateOpener) &&
+       State.Stack.back().ContainsUnwrappedBuilder);
   State.Stack.push_back(ParenState(NewIndent, NewIndentLevel,
                                    State.Stack.back().LastSpace,
                                    AvoidBinPacking, NoLineBreak));
index 73d17d39106bf3ac92ef8a542d648f63f9c610f7..70b02ebc8016622a1c96b761dead36590148ad51 100644 (file)
@@ -3765,9 +3765,12 @@ TEST_F(FormatTest, FormatsBuilderPattern) {
                "    .aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa<\n"
                "        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa>();");
 
-  // Prefer not to break after empty parentheses.
+  // Prefer not to break after empty parentheses ...
   verifyFormat("FirstToken->WhitespaceRange.getBegin().getLocWithOffset(\n"
                "    First->LastNewlineOffset);");
+  // ... unless nested.
+  verifyFormat("f(FirstToken->WhitespaceRange.getBegin()\n"
+               "      .getLocWithOffset(First->LastNewlineOffset));");
 }
 
 TEST_F(FormatTest, BreaksAccordingToOperatorPrecedence) {