From cea014bd8d280070caeb27e4e6e33e5723b4226f Mon Sep 17 00:00:00 2001 From: Daniel Jasper Date: Tue, 8 Oct 2013 16:24:07 +0000 Subject: [PATCH] clang-format: Improve indentation when deriving from templated classes. Before: struct aaaaaaaaaaaaa : public aaaaaaaaaaaaaaaaaaa< // aaaaaaaaaaaaaaaa> {}; struct aaaaaaaaaaaaaaaaaaaa : public aaaaaaaaaaaaaaaaaaa< aaaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaaaa> {}; After: struct aaaaaaaaaaaaa : public aaaaaaaaaaaaaaaaaaa< // aaaaaaaaaaaaaaaa> {}; struct aaaaaaaaaaaaaaaaaaaa : public aaaaaaaaaaaaaaaaaaa {}; git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192187 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Format/ContinuationIndenter.cpp | 5 +++-- lib/Format/TokenAnnotator.cpp | 2 +- unittests/Format/FormatTest.cpp | 5 +++++ 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/Format/ContinuationIndenter.cpp b/lib/Format/ContinuationIndenter.cpp index ff1f1aa853..3714088306 100644 --- a/lib/Format/ContinuationIndenter.cpp +++ b/lib/Format/ContinuationIndenter.cpp @@ -278,9 +278,10 @@ void ContinuationIndenter::addTokenOnCurrentLine(LineState &State, bool DryRun, // simple assignment without binary expression on the RHS. Also indent // relative to unary operators and the colons of constructor initializers. State.Stack.back().LastSpace = State.Column; - else if (Previous.Type == TT_InheritanceColon) + else if (Previous.Type == TT_InheritanceColon) { State.Stack.back().Indent = State.Column; - else if (Previous.opensScope()) { + State.Stack.back().LastSpace = State.Column; + } else if (Previous.opensScope()) { // If a function has a trailing call, indent all parameters from the // opening parenthesis. This avoids confusing indents like: // OuterFunction(InnerFunctionCall( // break diff --git a/lib/Format/TokenAnnotator.cpp b/lib/Format/TokenAnnotator.cpp index 0e06d3b651..823235e602 100644 --- a/lib/Format/TokenAnnotator.cpp +++ b/lib/Format/TokenAnnotator.cpp @@ -335,7 +335,7 @@ private: Contexts.back().FirstObjCSelectorName = Tok->Previous; } else if (Contexts.back().ColonIsForRangeExpr) { Tok->Type = TT_RangeBasedForLoopColon; - } else if (Contexts.size() == 1) { + } else if (Contexts.size() == 1 && Line.First->isNot(tok::kw_enum)) { Tok->Type = TT_InheritanceColon; } else if (Contexts.back().ContextKind == tok::l_paren) { Tok->Type = TT_InlineASMColon; diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp index 1916076ca0..4a51448f33 100644 --- a/unittests/Format/FormatTest.cpp +++ b/unittests/Format/FormatTest.cpp @@ -1530,6 +1530,11 @@ TEST_F(FormatTest, FormatsClasses) { " int i;\n" "};", getLLVMStyleWithColumns(32)); + verifyFormat("struct aaaaaaaaaaaaa : public aaaaaaaaaaaaaaaaaaa< // break\n" + " aaaaaaaaaaaaaaaa> {};"); + verifyFormat("struct aaaaaaaaaaaaaaaaaaaa\n" + " : public aaaaaaaaaaaaaaaaaaa {};"); } TEST_F(FormatTest, FormatsVariableDeclarationsAfterStructOrClass) { -- 2.40.0