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<aaaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaaaa> {}; llvm-svn: 192187
This commit is contained in:
parent
9ab9fe91fb
commit
f9a5e4043c
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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<aaaaaaaaaaaaaaaaaaaaa,\n"
|
||||
" aaaaaaaaaaaaaaaaaaaaaa> {};");
|
||||
}
|
||||
|
||||
TEST_F(FormatTest, FormatsVariableDeclarationsAfterStructOrClass) {
|
||||
|
|
Loading…
Reference in New Issue