[clang] [clang-format] fix aligning inheritance lists with UT_AlignWithSpaces (PR #189218)
Eugene Shalygin via cfe-commits
cfe-commits at lists.llvm.org
Sun Mar 29 02:01:33 PDT 2026
https://github.com/zeule updated https://github.com/llvm/llvm-project/pull/189218
>From 23f5d12bf9e97576a30e3e85ad11be4142650c58 Mon Sep 17 00:00:00 2001
From: Eugene Shalygin <e.shalygin at abberior-instruments.com>
Date: Fri, 27 Mar 2026 17:02:04 +0100
Subject: [PATCH] [clang-format] fix aligning inheritance lists with
UT_AlignWithSpaces
---
clang/lib/Format/ContinuationIndenter.cpp | 7 +++++++
clang/unittests/Format/FormatTest.cpp | 15 +++++++++++++++
2 files changed, 22 insertions(+)
diff --git a/clang/lib/Format/ContinuationIndenter.cpp b/clang/lib/Format/ContinuationIndenter.cpp
index a388b74920e0b..513453c7e4e40 100644
--- a/clang/lib/Format/ContinuationIndenter.cpp
+++ b/clang/lib/Format/ContinuationIndenter.cpp
@@ -1237,6 +1237,13 @@ unsigned ContinuationIndenter::addTokenOnNewLine(LineState &State,
Style.ContinuationIndentWidth;
}
}
+ if ((Style.BreakInheritanceList == FormatStyle::BILS_AfterComma ||
+ Style.BreakInheritanceList == FormatStyle::BILS_BeforeColon) &&
+ Previous.isOneOf(TT_InheritanceComma, tok::comma) &&
+ Current.isOneOf(tok::kw_private, tok::kw_protected, tok::kw_public,
+ tok::identifier)) {
+ CurrentState.IsAligned = true;
+ }
if ((PreviousNonComment &&
PreviousNonComment->isOneOf(tok::comma, tok::semi) &&
diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp
index 3d55a814e6027..68537b0a2b5f6 100644
--- a/clang/unittests/Format/FormatTest.cpp
+++ b/clang/unittests/Format/FormatTest.cpp
@@ -8433,6 +8433,21 @@ TEST_F(FormatTest, BreakConstructorInitializersAfterColon) {
" : public aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,\n"
" public bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb {};",
Style);
+ FormatStyle Tabbed = getLLVMStyleWithColumns(42);
+ Tabbed.IndentWidth = 4;
+ Tabbed.TabWidth = 4;
+ Tabbed.UseTab = FormatStyle::UT_AlignWithSpaces;
+ verifyFormat("class Foo : public aaaaaaaaa,\n"
+ " public bbbbbbbbb\n",
+ Tabbed);
+ verifyFormat("struct S {\n"
+ "\tclass Foo : public aaaaaaaaa,\n"
+ "\t public bbbbbbbbb {};\n"
+ "};",
+ Tabbed);
+ verifyFormat("struct Foo : aaaaaaaaaaaaaaa,\n"
+ " bbbbbbbbbbbbbbb\n",
+ Tabbed);
}
TEST_F(FormatTest, BreakConstructorInitializersAfterComma) {
More information about the cfe-commits
mailing list