Index: clang/lib/Format/UnwrappedLineFormatter.cpp =================================================================== --- clang/lib/Format/UnwrappedLineFormatter.cpp +++ clang/lib/Format/UnwrappedLineFormatter.cpp @@ -584,6 +584,9 @@ Keywords.kw___except)) { if (Style.AllowShortBlocksOnASingleLine == FormatStyle::SBS_Never) return 0; + if (Style.AllowShortBlocksOnASingleLine == FormatStyle::SBS_Empty && + !I[1]->First->is(tok::r_brace)) + return 0; // Don't merge when we can't except the case when // the control statement block is empty if (!Style.AllowShortIfStatementsOnASingleLine && Index: clang/unittests/Format/FormatTest.cpp =================================================================== --- clang/unittests/Format/FormatTest.cpp +++ clang/unittests/Format/FormatTest.cpp @@ -22783,6 +22783,23 @@ verifyFormat("co_return co_yield foo();"); } +TEST_F(FormatTest, EmptyShortBlock) { + auto Style = getLLVMStyle(); + Style.AllowShortBlocksOnASingleLine = FormatStyle::SBS_Empty; + + verifyFormat("try {\n" + " doA();\n" + "} catch (Exception &e) {\n" + " e.printStackTrace();\n" + "}\n", + Style); + + verifyFormat("try {\n" + " doA();\n" + "} catch (Exception &e) {}\n", + Style); +} + } // namespace } // namespace format } // namespace clang Index: clang/unittests/Format/FormatTestCSharp.cpp =================================================================== --- clang/unittests/Format/FormatTestCSharp.cpp +++ clang/unittests/Format/FormatTestCSharp.cpp @@ -1369,5 +1369,22 @@ Style); } +TEST_F(FormatTestCSharp, EmptyShortBlock) { + auto Style = getLLVMStyle(); + Style.AllowShortBlocksOnASingleLine = FormatStyle::SBS_Empty; + + verifyFormat("try {\n" + " doA();\n" + "} catch (Exception e) {\n" + " e.printStackTrace();\n" + "}\n", + Style); + + verifyFormat("try {\n" + " doA();\n" + "} catch (Exception e) {}\n", + Style); +} + } // namespace format } // end namespace clang