[clang] [clang-format] Disable short blocks if brace is on the new line (PR #196021)

Gedare Bloom via cfe-commits cfe-commits at lists.llvm.org
Sat Jun 13 12:21:46 PDT 2026


================
@@ -895,6 +889,11 @@ class LineJoiner {
         Line.startsWithExportBlock()) {
       if (IsSplitBlock)
         return 0;
+      // The construct-specific options AllowShortIfStatementsOnASingleLine and
+      // AllowShortLoopsOnASingleLine take precedence over
+      // AllowShortBlocksOnASingleLine: a statement whose specific option
+      // disallows merging is not put on a single line even when short blocks
+      // are always allowed.
----------------
gedare wrote:

To me it makes sense to make these options operate as independently from each other as possible. The block option should control the behavior of `{ ... }`, the Loop/If option should control the behavior everything up to the first `{`, and the `BraceWrapping` should control the behavior of that first `{`.

Somehow the initial options for the Loop/If appeared to assume these were just for braceless one-liners, which makes some sense. However, as the scope has expanded to include braces, the need to treat the cases of bracless, with braces, braces on same/next line, and ability to fit entire braced expression on one line, have all become necessary to handle simultaneously.

The current direction of this PR is moving away from fixing a regression and toward introducing new regressions. The modification of the test cases shows this. You should instead show how the test case `Style` options need to be changed in order to maintain the tests, and add new test cases (as you have) for any uncovered behavior.

NB: I do not have a style that is no longer possible to achieve, I'm looking at this solely as a reviewer and developer of clang-format.

https://github.com/llvm/llvm-project/pull/196021


More information about the cfe-commits mailing list