MyDeveloperDay created this revision. MyDeveloperDay added reviewers: Sam0523, HazardyKnusperkeks, owenpan, curdeius. MyDeveloperDay added projects: clang, clang-format. MyDeveloperDay requested review of this revision.
https://github.com/llvm/llvm-project/issues/52715 Fixes #52715 `AllowShortBlocksOnASingleLine` seems to never be checked for "Empty" as such if its used it will be considered "Always" as we only ever check `AllowShortBlocksOnASingleLine != Never` This impacts C++ as well as C# hence the slightly duplicated test. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D115794 Files: clang/lib/Format/UnwrappedLineFormatter.cpp clang/unittests/Format/FormatTest.cpp clang/unittests/Format/FormatTestCSharp.cpp 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 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/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/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 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/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 &&
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits