From: Daniel Jasper Date: Fri, 22 Nov 2013 07:48:15 +0000 (+0000) Subject: clang-format: Fix bug in alignment of complex template parameters. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b58630fa0846c1bf186db36ac5e12ad0ea6b353d;p=clang clang-format: Fix bug in alignment of complex template parameters. Before: template class cccccccccccccccccccccc, typename ddddddddddddd> class C {}; After: template class cccccccccccccccccccccc, typename ddddddddddddd> class C {}; git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@195418 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Format/ContinuationIndenter.cpp b/lib/Format/ContinuationIndenter.cpp index c8b8b7e8f3..3a49ec43f9 100644 --- a/lib/Format/ContinuationIndenter.cpp +++ b/lib/Format/ContinuationIndenter.cpp @@ -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 = diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp index b0b1c0f561..5ddcc3f131 100644 --- a/unittests/Format/FormatTest.cpp +++ b/unittests/Format/FormatTest.cpp @@ -3882,6 +3882,10 @@ TEST_F(FormatTest, WrapsTemplateDeclarations) { "template \n" "void f();"); + verifyFormat("template class cccccccccccccccccccccc,\n" + " typename ddddddddddddd>\n" + "class C {};"); verifyFormat( "aaaaaaaaaaaaaaaaaaaaaaaa(\n" " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa);");