diff --git a/clang/lib/Format/UnwrappedLineFormatter.cpp b/clang/lib/Format/UnwrappedLineFormatter.cpp --- a/clang/lib/Format/UnwrappedLineFormatter.cpp +++ b/clang/lib/Format/UnwrappedLineFormatter.cpp @@ -676,7 +676,7 @@ // { <-- current Line // baz(); // } - if (Line.First == Line.Last && + if (Line.First == Line.Last && Line.First->isNot(TT_FunctionLBrace) && Style.BraceWrapping.AfterControlStatement == FormatStyle::BWACS_MultiLine) return 0; diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -2860,6 +2860,19 @@ " baz();\n" "}", 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) {