Author: mydeveloperday Date: 2021-12-15T23:06:52Z New Revision: a94aab12a4e0bec6cd1eb676a3360fc1b5ac8eee
URL: https://github.com/llvm/llvm-project/commit/a94aab12a4e0bec6cd1eb676a3360fc1b5ac8eee DIFF: https://github.com/llvm/llvm-project/commit/a94aab12a4e0bec6cd1eb676a3360fc1b5ac8eee.diff LOG: [clang-format] put non-empty catch block on one line with AllowShortBlocksOnASingleLine: Empty 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. Reviewed By: curdeius, jbcoe Differential Revision: https://reviews.llvm.org/D115794 Added: Modified: clang/lib/Format/UnwrappedLineFormatter.cpp clang/unittests/Format/FormatTest.cpp clang/unittests/Format/FormatTestCSharp.cpp Removed: ################################################################################ diff --git a/clang/lib/Format/UnwrappedLineFormatter.cpp b/clang/lib/Format/UnwrappedLineFormatter.cpp index 4c341aadbd017..a9beaef08e6e9 100644 --- a/clang/lib/Format/UnwrappedLineFormatter.cpp +++ b/clang/lib/Format/UnwrappedLineFormatter.cpp @@ -584,6 +584,9 @@ class LineJoiner { 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 && diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index 271acf97c3f1e..f54139227e871 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -22858,6 +22858,23 @@ TEST_F(FormatTest, CoroutineCoReturn) { 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 diff --git a/clang/unittests/Format/FormatTestCSharp.cpp b/clang/unittests/Format/FormatTestCSharp.cpp index 0536903ef4f10..78547e07d2150 100644 --- a/clang/unittests/Format/FormatTestCSharp.cpp +++ b/clang/unittests/Format/FormatTestCSharp.cpp @@ -1379,5 +1379,22 @@ TEST_F(FormatTestCSharp, SwitchExpression) { 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 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits