[clang] [clang-format] Fix nested parsing of AlignAfterOpenBracket (PR #192283)
via cfe-commits
cfe-commits at lists.llvm.org
Wed Apr 15 09:03:57 PDT 2026
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang-format
Author: Gedare Bloom (gedare)
<details>
<summary>Changes</summary>
When parsing AlignAfterOpenBracket a default backward compatibility option is always used even if an inherited style option was set. Avoid using the default setting unless one of the backward compatible enum type options is found.
Fixes #<!-- -->183845
Fixes #<!-- -->190758
---
Full diff: https://github.com/llvm/llvm-project/pull/192283.diff
1 Files Affected:
- (modified) clang/lib/Format/Format.cpp (+43-14)
``````````diff
diff --git a/clang/lib/Format/Format.cpp b/clang/lib/Format/Format.cpp
index 42190604b3881..9ff329876716b 100644
--- a/clang/lib/Format/Format.cpp
+++ b/clang/lib/Format/Format.cpp
@@ -39,7 +39,8 @@ enum BracketAlignmentStyle : int8_t {
BAS_Align,
BAS_DontAlign,
BAS_AlwaysBreak,
- BAS_BlockIndent
+ BAS_BlockIndent,
+ BAS_Ignore
};
namespace llvm {
@@ -1080,7 +1081,7 @@ template <> struct MappingTraits<FormatStyle> {
IO.mapOptional("AlignAfterOpenBracket", Style.AlignAfterOpenBracket);
} else {
// For backward compatibility.
- BracketAlignmentStyle LocalBAS = BAS_Align;
+ BracketAlignmentStyle LocalBAS = BAS_Ignore;
if (IsGoogleOrChromium) {
FormatStyle::LanguageKind Language = Style.Language;
if (Language == FormatStyle::LK_None)
@@ -1093,33 +1094,61 @@ template <> struct MappingTraits<FormatStyle> {
LocalBAS = BAS_DontAlign;
}
IO.mapOptional("AlignAfterOpenBracket", LocalBAS);
- Style.BreakAfterOpenBracketBracedList = false;
- Style.BreakAfterOpenBracketFunction = false;
- Style.BreakAfterOpenBracketIf = false;
- Style.BreakAfterOpenBracketLoop = false;
- Style.BreakAfterOpenBracketSwitch = false;
- Style.BreakBeforeCloseBracketBracedList = false;
- Style.BreakBeforeCloseBracketFunction = false;
- Style.BreakBeforeCloseBracketIf = false;
- Style.BreakBeforeCloseBracketLoop = false;
- Style.BreakBeforeCloseBracketSwitch = false;
switch (LocalBAS) {
case BAS_DontAlign:
Style.AlignAfterOpenBracket = false;
+ Style.BreakAfterOpenBracketBracedList = false;
+ Style.BreakAfterOpenBracketFunction = false;
+ Style.BreakAfterOpenBracketIf = false;
+ Style.BreakAfterOpenBracketLoop = false;
+ Style.BreakAfterOpenBracketSwitch = false;
+ Style.BreakBeforeCloseBracketBracedList = false;
+ Style.BreakBeforeCloseBracketFunction = false;
+ Style.BreakBeforeCloseBracketIf = false;
+ Style.BreakBeforeCloseBracketLoop = false;
+ Style.BreakBeforeCloseBracketSwitch = false;
break;
case BAS_BlockIndent:
+ Style.AlignAfterOpenBracket = true;
Style.BreakBeforeCloseBracketBracedList = true;
Style.BreakBeforeCloseBracketFunction = true;
Style.BreakBeforeCloseBracketIf = true;
- [[fallthrough]];
+ Style.BreakAfterOpenBracketLoop = false;
+ Style.BreakAfterOpenBracketSwitch = false;
+ Style.BreakBeforeCloseBracketBracedList = false;
+ Style.BreakBeforeCloseBracketFunction = false;
+ Style.BreakBeforeCloseBracketIf = false;
+ Style.BreakBeforeCloseBracketLoop = false;
+ Style.BreakBeforeCloseBracketSwitch = false;
+ break;
case BAS_AlwaysBreak:
+ Style.AlignAfterOpenBracket = true;
Style.BreakAfterOpenBracketBracedList = true;
Style.BreakAfterOpenBracketFunction = true;
Style.BreakAfterOpenBracketIf = true;
- [[fallthrough]];
+ Style.BreakAfterOpenBracketLoop = false;
+ Style.BreakAfterOpenBracketSwitch = false;
+ Style.BreakBeforeCloseBracketBracedList = false;
+ Style.BreakBeforeCloseBracketFunction = false;
+ Style.BreakBeforeCloseBracketIf = false;
+ Style.BreakBeforeCloseBracketLoop = false;
+ Style.BreakBeforeCloseBracketSwitch = false;
+ break;
case BAS_Align:
Style.AlignAfterOpenBracket = true;
+ Style.BreakAfterOpenBracketBracedList = false;
+ Style.BreakAfterOpenBracketFunction = false;
+ Style.BreakAfterOpenBracketIf = false;
+ Style.BreakAfterOpenBracketLoop = false;
+ Style.BreakAfterOpenBracketSwitch = false;
+ Style.BreakBeforeCloseBracketBracedList = false;
+ Style.BreakBeforeCloseBracketFunction = false;
+ Style.BreakBeforeCloseBracketIf = false;
+ Style.BreakBeforeCloseBracketLoop = false;
+ Style.BreakBeforeCloseBracketSwitch = false;
+ break;
+ case BAS_Ignore:
break;
}
}
``````````
</details>
https://github.com/llvm/llvm-project/pull/192283
More information about the cfe-commits
mailing list