[clang-format] [PR47936] AfterControlStatement: MultiLine breaks AllowShortFunctionsOnASingleLine

https://bugs.llvm.org/show_bug.cgi?id=47936

Using the MultiLine setting for BraceWrapping.AfterControlStatement appears to disable AllowShortFunctionsOnASingleLine, even in cases without any control statements

Reviewed By: HazardyKnusperkeks, curdeius

Differential Revision: https://reviews.llvm.org/D114521
This commit is contained in:
mydeveloperday 2021-11-25 08:30:31 +00:00
parent 8804d08e99
commit 72e4f4a2a1
2 changed files with 14 additions and 1 deletions

View File

@ -676,7 +676,7 @@ private:
// { <-- current Line // { <-- current Line
// baz(); // baz();
// } // }
if (Line.First == Line.Last && if (Line.First == Line.Last && Line.First->isNot(TT_FunctionLBrace) &&
Style.BraceWrapping.AfterControlStatement == Style.BraceWrapping.AfterControlStatement ==
FormatStyle::BWACS_MultiLine) FormatStyle::BWACS_MultiLine)
return 0; return 0;

View File

@ -2860,6 +2860,19 @@ TEST_F(FormatTest, MultiLineControlStatements) {
" baz();\n" " baz();\n"
"}", "}",
format("try{foo();}catch(...){baz();}", Style)); format("try{foo();}catch(...){baz();}", Style));
Style.BraceWrapping.AfterFunction = true;
Style.BraceWrapping.AfterControlStatement = FormatStyle::BWACS_MultiLine;
Style.AllowShortFunctionsOnASingleLine = FormatStyle::SFS_All;
Style.ColumnLimit = 80;
verifyFormat("void shortfunction() { bar(); }", Style);
Style.AllowShortFunctionsOnASingleLine = FormatStyle::SFS_None;
verifyFormat("void shortfunction()\n"
"{\n"
" bar();\n"
"}",
Style);
} }
TEST_F(FormatTest, BeforeWhile) { TEST_F(FormatTest, BeforeWhile) {