[clang] [clang-format] Fix nested parsing of AlignAfterOpenBracket (PR #192283)
Gedare Bloom via cfe-commits
cfe-commits at lists.llvm.org
Wed Apr 15 09:03:23 PDT 2026
https://github.com/gedare created https://github.com/llvm/llvm-project/pull/192283
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
>From 09380e35601bd030eb8f32232fb59e62c22378a1 Mon Sep 17 00:00:00 2001
From: Gedare Bloom <gedare at rtems.org>
Date: Wed, 15 Apr 2026 09:59:02 -0600
Subject: [PATCH] [clang-format] Fix nested parsing of AlignAfterOpenBracket
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
---
clang/lib/Format/Format.cpp | 57 ++++++++++++++++++++++++++++---------
1 file changed, 43 insertions(+), 14 deletions(-)
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;
}
}
More information about the cfe-commits
mailing list