[clang] c4714e4 - [clang-format] Fix BlockIndent compat mapping of AlignAfterOpenBracket (#207187)
via cfe-commits
cfe-commits at lists.llvm.org
Sun Jul 5 01:35:37 PDT 2026
Author: Sergey Subbotin
Date: 2026-07-05T10:35:32+02:00
New Revision: c4714e43dc36f4bcf047e0f4bb1f8757fe72e422
URL: https://github.com/llvm/llvm-project/commit/c4714e43dc36f4bcf047e0f4bb1f8757fe72e422
DIFF: https://github.com/llvm/llvm-project/commit/c4714e43dc36f4bcf047e0f4bb1f8757fe72e422.diff
LOG: [clang-format] Fix BlockIndent compat mapping of AlignAfterOpenBracket (#207187)
be11e2b3d25 (#192283) replaced the `[[fallthrough]]` chain in the
`AlignAfterOpenBracket` backward-compatibility switch with explicit
per-case assignments. In the `BAS_BlockIndent` case the
`BreakBeforeCloseBracket{BracedList,Function,If} = true` assignments are
immediately overwritten with `false`, and
`BreakAfterOpenBracket{BracedList,Function,If}` (previously inherited
from the `BAS_AlwaysBreak` case via fallthrough) are never set. As a
result, `AlignAfterOpenBracket: BlockIndent` parses to the same flag set
as `Align`, silently dropping the block-indent style for existing
configurations.
Restore the pre-#192283 mapping and pin the full BlockIndent flag
mapping in ConfigParseTest so the compat shim cannot regress silently
again.
Fixes #207186.
Note for the release branch: if #205920 (backport of #192283 to
release/22.x) lands, this fix needs to be backported together with it.
Added:
Modified:
clang/lib/Format/Format.cpp
clang/unittests/Format/ConfigParseTest.cpp
Removed:
################################################################################
diff --git a/clang/lib/Format/Format.cpp b/clang/lib/Format/Format.cpp
index ecfe5d2ce60d0..037111d8e9e5d 100644
--- a/clang/lib/Format/Format.cpp
+++ b/clang/lib/Format/Format.cpp
@@ -1159,14 +1159,14 @@ template <> struct MappingTraits<FormatStyle> {
break;
case BAS_BlockIndent:
Style.AlignAfterOpenBracket = true;
+ Style.BreakAfterOpenBracketBracedList = true;
+ Style.BreakAfterOpenBracketFunction = true;
+ Style.BreakAfterOpenBracketIf = true;
+ Style.BreakAfterOpenBracketLoop = false;
+ Style.BreakAfterOpenBracketSwitch = false;
Style.BreakBeforeCloseBracketBracedList = true;
Style.BreakBeforeCloseBracketFunction = true;
Style.BreakBeforeCloseBracketIf = true;
- Style.BreakAfterOpenBracketLoop = false;
- Style.BreakAfterOpenBracketSwitch = false;
- Style.BreakBeforeCloseBracketBracedList = false;
- Style.BreakBeforeCloseBracketFunction = false;
- Style.BreakBeforeCloseBracketIf = false;
Style.BreakBeforeCloseBracketLoop = false;
Style.BreakBeforeCloseBracketSwitch = false;
break;
diff --git a/clang/unittests/Format/ConfigParseTest.cpp b/clang/unittests/Format/ConfigParseTest.cpp
index eeaf5d3f66d96..205cc9bcb6d31 100644
--- a/clang/unittests/Format/ConfigParseTest.cpp
+++ b/clang/unittests/Format/ConfigParseTest.cpp
@@ -650,8 +650,30 @@ TEST(ConfigParseTest, ParsesConfiguration) {
"AlignAfterOpenBracket: AlwaysBreak",
BreakAfterOpenBracketLoop, true);
CHECK_PARSE("AlignAfterOpenBracket: false", AlignAfterOpenBracket, false);
+ // BlockIndent implies breaking after the open bracket and before the close
+ // bracket of braced lists, function calls/declarations, and if conditions.
+ Style.BreakAfterOpenBracketBracedList = false;
+ Style.BreakAfterOpenBracketFunction = false;
+ Style.BreakAfterOpenBracketIf = false;
+ Style.BreakAfterOpenBracketLoop = true;
+ Style.BreakAfterOpenBracketSwitch = true;
+ Style.BreakBeforeCloseBracketBracedList = false;
+ Style.BreakBeforeCloseBracketFunction = false;
+ Style.BreakBeforeCloseBracketIf = false;
+ Style.BreakBeforeCloseBracketLoop = true;
+ Style.BreakBeforeCloseBracketSwitch = true;
CHECK_PARSE("AlignAfterOpenBracket: BlockIndent", AlignAfterOpenBracket,
true);
+ EXPECT_TRUE(Style.BreakAfterOpenBracketBracedList);
+ EXPECT_TRUE(Style.BreakAfterOpenBracketFunction);
+ EXPECT_TRUE(Style.BreakAfterOpenBracketIf);
+ EXPECT_FALSE(Style.BreakAfterOpenBracketLoop);
+ EXPECT_FALSE(Style.BreakAfterOpenBracketSwitch);
+ EXPECT_TRUE(Style.BreakBeforeCloseBracketBracedList);
+ EXPECT_TRUE(Style.BreakBeforeCloseBracketFunction);
+ EXPECT_TRUE(Style.BreakBeforeCloseBracketIf);
+ EXPECT_FALSE(Style.BreakBeforeCloseBracketLoop);
+ EXPECT_FALSE(Style.BreakBeforeCloseBracketSwitch);
Style.AlignAfterOpenBracket = false;
CHECK_PARSE("AlignAfterOpenBracket: true", AlignAfterOpenBracket, true);
More information about the cfe-commits
mailing list