]> granicus.if.org Git - clang/commitdiff
clang-format: Fix bug in alignment of complex template parameters.
authorDaniel Jasper <djasper@google.com>
Fri, 22 Nov 2013 07:48:15 +0000 (07:48 +0000)
committerDaniel Jasper <djasper@google.com>
Fri, 22 Nov 2013 07:48:15 +0000 (07:48 +0000)
Before:
  template <typename aaaaaaaaaaa, typename bbbbbbbbbbbbb, template <typename>
            class cccccccccccccccccccccc, typename ddddddddddddd>
  class C {};

After:
  template <typename aaaaaaaaaaa, typename bbbbbbbbbbbbb,
            template <typename> class cccccccccccccccccccccc,
            typename ddddddddddddd>
  class C {};

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

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

index c8b8b7e8f3c9673240e5d70dda5c12d54a0e2407..3a49ec43f9c6a8e0b71fd1f50f035d26fd27a548 100644 (file)
@@ -375,7 +375,8 @@ unsigned ContinuationIndenter::addTokenOnNewLine(LineState &State,
               State.ParenLevel == 0 &&
               (!Style.IndentFunctionDeclarationAfterType ||
                State.Line->StartsDefinition))) {
-    State.Column = State.Stack.back().Indent;
+    State.Column =
+        std::max(State.Stack.back().LastSpace, State.Stack.back().Indent);
   } else if (Current.Type == TT_ObjCSelectorName) {
     if (State.Stack.back().ColonPos == 0) {
       State.Stack.back().ColonPos =
index b0b1c0f5615fb59335269a0c30496b7d952f130d..5ddcc3f1316ba6e5000a192ca471aa2542a89dc4 100644 (file)
@@ -3882,6 +3882,10 @@ TEST_F(FormatTest, WrapsTemplateDeclarations) {
       "template <typename T1, typename T2 = char, typename T3 = char,\n"
       "          typename T4 = char>\n"
       "void f();");
+  verifyFormat("template <typename aaaaaaaaaaa, typename bbbbbbbbbbbbb,\n"
+               "          template <typename> class cccccccccccccccccccccc,\n"
+               "          typename ddddddddddddd>\n"
+               "class C {};");
   verifyFormat(
       "aaaaaaaaaaaaaaaaaaaaaaaa<aaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaa>(\n"
       "    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa);");