forked from OSchip/llvm-project
Break function declarations after multi-line return types.
Before: template <typename A> SomeLoooooooooooooooooooooongType< typename some_namespace::SomeOtherType<A>::Type> Function() {} After: template <typename A> SomeLoooooooooooooooooooooongType< typename some_namespace::SomeOtherType<A>::Type> Function() {} llvm-svn: 181877
This commit is contained in:
parent
e2af9ea00f
commit
c6fbc2192c
|
@ -504,6 +504,8 @@ private:
|
|||
!State.Stack.back().AvoidBinPacking) ||
|
||||
Previous.Type == TT_BinaryOperator)
|
||||
State.Stack.back().BreakBeforeParameter = false;
|
||||
if (Previous.Type == TT_TemplateCloser && State.ParenLevel == 0)
|
||||
State.Stack.back().BreakBeforeParameter = false;
|
||||
|
||||
if (!DryRun) {
|
||||
unsigned NewLines = 1;
|
||||
|
@ -531,6 +533,7 @@ private:
|
|||
}
|
||||
const AnnotatedToken *TokenBefore = Current.getPreviousNoneComment();
|
||||
if (TokenBefore && !TokenBefore->isOneOf(tok::comma, tok::semi) &&
|
||||
TokenBefore->Type != TT_TemplateCloser &&
|
||||
TokenBefore->Type != TT_BinaryOperator && !TokenBefore->opensScope())
|
||||
State.Stack.back().BreakBeforeParameter = true;
|
||||
|
||||
|
@ -1017,6 +1020,10 @@ private:
|
|||
getRemainingLength(State) + State.Column > getColumnLimit() &&
|
||||
State.ParenLevel < State.StartOfLineLevel)
|
||||
return true;
|
||||
|
||||
if (Current.Type == TT_StartOfName && Line.MightBeFunctionDecl &&
|
||||
State.Stack.back().BreakBeforeParameter && State.ParenLevel == 0)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -2002,7 +2002,7 @@ TEST_F(FormatTest, FormatsBuilderPattern) {
|
|||
" .StartsWith(\".eh_frame\", ORDER_EH_FRAME).StartsWith(\".init\", ORDER_INIT)\n"
|
||||
" .StartsWith(\".fini\", ORDER_FINI).StartsWith(\".hash\", ORDER_HASH)\n"
|
||||
" .Default(ORDER_TEXT);\n");
|
||||
|
||||
|
||||
verifyFormat("return aaaaaaaaaaaaaaaaa->aaaaa().aaaaaaaaaaaaa().aaaaaa() <\n"
|
||||
" aaaaaaaaaaaaaaa->aaaaa().aaaaaaaaaaaaa().aaaaaa();");
|
||||
verifyFormat(
|
||||
|
@ -2835,6 +2835,10 @@ TEST_F(FormatTest, BreaksLongDeclarations) {
|
|||
" ReallyReallyLongParameterName,\n"
|
||||
" const SomeType<string, SomeOtherTemplateParameter> &\n"
|
||||
" AnotherLongParameterName) {}");
|
||||
verifyFormat("template <typename A>\n"
|
||||
"SomeLoooooooooooooooooooooongType<\n"
|
||||
" typename some_namespace::SomeOtherType<A>::Type>\n"
|
||||
"Function() {}");
|
||||
verifyFormat(
|
||||
"aaaaaaaaaaaaaaaa::aaaaaaaaaaaaaaaa<aaaaaaaaaaaaa, aaaaaaaaaaaa>\n"
|
||||
" aaaaaaaaaaaaaaaaaaaaaaa;");
|
||||
|
|
Loading…
Reference in New Issue