clang-format: Don't let a leading "template <..>" lead to wrapped initializers.

Before:
  Constructor() : initializer(0) {}

  template <typename T>
  Constructor()
      : initializer(0) {}

After:
  Constructor() : initializer(0) {}

  template <typename T>
  Constructor() : initializer(0) {}

llvm-svn: 246146
This commit is contained in:
Daniel Jasper
2015-08-27 11:59:31 +00:00
parent 1bbf15c57c
commit 7b259cda96
2 changed files with 10 additions and 0 deletions

View File

@@ -158,6 +158,9 @@ bool ContinuationIndenter::mustBreak(const LineState &State) {
getColumnLimit(State))
return true;
if (Current.is(TT_CtorInitializerColon) &&
(State.Column + State.Line->Last->TotalLength - Current.TotalLength + 2 >
getColumnLimit(State) ||
State.Stack.back().BreakBeforeParameter) &&
((Style.AllowShortFunctionsOnASingleLine != FormatStyle::SFS_All) ||
Style.BreakConstructorInitializersBeforeComma || Style.ColumnLimit != 0))
return true;

View File

@@ -3519,6 +3519,10 @@ TEST_F(FormatTest, ConstructorInitializers) {
" : Inttializer(FitsOnTheLine) {}",
getLLVMStyleWithColumns(43));
verifyFormat("template <typename T>\n"
"Constructor() : Initializer(FitsOnTheLine) {}",
getLLVMStyleWithColumns(45));
verifyFormat(
"SomeClass::Constructor()\n"
" : aaaaaaaaaaaaa(aaaaaaaaaaaaaa), aaaaaaaaaaaaaaa(aaaaaaaaaaaa) {}");
@@ -3531,6 +3535,9 @@ TEST_F(FormatTest, ConstructorInitializers) {
"SomeClass::Constructor()\n"
" : aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa),\n"
" aaaaaaaaaaaaaaa(aaaaaaaaaaaa) {}");
verifyFormat("Constructor(aaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,\n"
" aaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)\n"
" : aaaaaaaaaa(aaaaaa) {}");
verifyFormat("Constructor()\n"
" : aaaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaaaa),\n"