[clang] 80f34e2 - [clang-format] Change BracedInitializerIndentWidth to int (#128988)
via cfe-commits
cfe-commits at lists.llvm.org
Thu Feb 27 20:18:06 PST 2025
Author: Owen Pan
Date: 2025-02-27T20:18:02-08:00
New Revision: 80f34e2716e8e69347ae16da5fff7114442db310
URL: https://github.com/llvm/llvm-project/commit/80f34e2716e8e69347ae16da5fff7114442db310
DIFF: https://github.com/llvm/llvm-project/commit/80f34e2716e8e69347ae16da5fff7114442db310.diff
LOG: [clang-format] Change BracedInitializerIndentWidth to int (#128988)
Fixes #108526
Added:
Modified:
clang/docs/ClangFormatStyleOptions.rst
clang/include/clang/Format/Format.h
clang/lib/Format/ContinuationIndenter.cpp
clang/lib/Format/Format.cpp
clang/unittests/Format/ConfigParseTest.cpp
Removed:
################################################################################
diff --git a/clang/docs/ClangFormatStyleOptions.rst b/clang/docs/ClangFormatStyleOptions.rst
index d157c07c9cef8..9ecac68ae72bf 100644
--- a/clang/docs/ClangFormatStyleOptions.rst
+++ b/clang/docs/ClangFormatStyleOptions.rst
@@ -2582,9 +2582,9 @@ the configuration (without a prefix: ``Auto``).
.. _BracedInitializerIndentWidth:
-**BracedInitializerIndentWidth** (``Unsigned``) :versionbadge:`clang-format 17` :ref:`¶ <BracedInitializerIndentWidth>`
+**BracedInitializerIndentWidth** (``Integer``) :versionbadge:`clang-format 17` :ref:`¶ <BracedInitializerIndentWidth>`
The number of columns to use to indent the contents of braced init lists.
- If unset, ``ContinuationIndentWidth`` is used.
+ If unset or negative, ``ContinuationIndentWidth`` is used.
.. code-block:: c++
diff --git a/clang/include/clang/Format/Format.h b/clang/include/clang/Format/Format.h
index 46fb1d52701b3..fec47a248abb4 100644
--- a/clang/include/clang/Format/Format.h
+++ b/clang/include/clang/Format/Format.h
@@ -1289,7 +1289,7 @@ struct FormatStyle {
BitFieldColonSpacingStyle BitFieldColonSpacing;
/// The number of columns to use to indent the contents of braced init lists.
- /// If unset, ``ContinuationIndentWidth`` is used.
+ /// If unset or negative, ``ContinuationIndentWidth`` is used.
/// \code
/// AlignAfterOpenBracket: AlwaysBreak
/// BracedInitializerIndentWidth: 2
@@ -1319,7 +1319,7 @@ struct FormatStyle {
/// }
/// \endcode
/// \version 17
- std::optional<unsigned> BracedInitializerIndentWidth;
+ int BracedInitializerIndentWidth;
/// Different ways to wrap braces after control statements.
enum BraceWrappingAfterControlStatementStyle : int8_t {
diff --git a/clang/lib/Format/ContinuationIndenter.cpp b/clang/lib/Format/ContinuationIndenter.cpp
index d49128c2b40f8..972dceb697a8b 100644
--- a/clang/lib/Format/ContinuationIndenter.cpp
+++ b/clang/lib/Format/ContinuationIndenter.cpp
@@ -1921,9 +1921,9 @@ void ContinuationIndenter::moveStatePastScopeOpener(LineState &State,
NewIndent = Style.IndentWidth +
std::min(State.Column, CurrentState.NestedBlockIndent);
} else if (Current.is(tok::l_brace)) {
- NewIndent =
- CurrentState.LastSpace + Style.BracedInitializerIndentWidth.value_or(
- Style.ContinuationIndentWidth);
+ const auto Width = Style.BracedInitializerIndentWidth;
+ NewIndent = CurrentState.LastSpace +
+ (Width < 0 ? Style.ContinuationIndentWidth : Width);
} else {
NewIndent = CurrentState.LastSpace + Style.ContinuationIndentWidth;
}
diff --git a/clang/lib/Format/Format.cpp b/clang/lib/Format/Format.cpp
index 68ef119fb4d65..92678a031178a 100644
--- a/clang/lib/Format/Format.cpp
+++ b/clang/lib/Format/Format.cpp
@@ -1512,7 +1512,7 @@ FormatStyle getLLVMStyle(FormatStyle::LanguageKind Language) {
LLVMStyle.BinPackLongBracedList = true;
LLVMStyle.BinPackParameters = FormatStyle::BPPS_BinPack;
LLVMStyle.BitFieldColonSpacing = FormatStyle::BFCS_Both;
- LLVMStyle.BracedInitializerIndentWidth = std::nullopt;
+ LLVMStyle.BracedInitializerIndentWidth = -1;
LLVMStyle.BraceWrapping = {/*AfterCaseLabel=*/false,
/*AfterClass=*/false,
/*AfterControlStatement=*/FormatStyle::BWACS_Never,
diff --git a/clang/unittests/Format/ConfigParseTest.cpp b/clang/unittests/Format/ConfigParseTest.cpp
index 9cd262960b724..273bab87b1ee1 100644
--- a/clang/unittests/Format/ConfigParseTest.cpp
+++ b/clang/unittests/Format/ConfigParseTest.cpp
@@ -265,9 +265,9 @@ TEST(ConfigParseTest, ParsesConfigurationIntegers) {
Style.Language = FormatStyle::LK_Cpp;
CHECK_PARSE_INT(AccessModifierOffset);
+ CHECK_PARSE_INT(BracedInitializerIndentWidth);
CHECK_PARSE_INT(PPIndentWidth);
- CHECK_PARSE_UNSIGNED(BracedInitializerIndentWidth);
CHECK_PARSE_UNSIGNED(ColumnLimit);
CHECK_PARSE_UNSIGNED(ConstructorInitializerIndentWidth);
CHECK_PARSE_UNSIGNED(ContinuationIndentWidth);
@@ -1441,8 +1441,10 @@ TEST(ConfigParseTest, GetStyleOfFile) {
ASSERT_EQ(*Style9, SubSubStyle);
// Test 9.8: use inheritance from a file without BasedOnStyle
- ASSERT_TRUE(FS.addFile("/e/withoutbase/.clang-format", 0,
- llvm::MemoryBuffer::getMemBuffer("ColumnLimit: 123")));
+ ASSERT_TRUE(FS.addFile(
+ "/e/withoutbase/.clang-format", 0,
+ llvm::MemoryBuffer::getMemBuffer("BracedInitializerIndentWidth: 2\n"
+ "ColumnLimit: 123")));
ASSERT_TRUE(
FS.addFile("/e/withoutbase/sub/.clang-format", 0,
llvm::MemoryBuffer::getMemBuffer(
@@ -1452,6 +1454,7 @@ TEST(ConfigParseTest, GetStyleOfFile) {
ASSERT_TRUE(static_cast<bool>(Style9));
ASSERT_EQ(*Style9, [] {
auto Style = getLLVMStyle();
+ Style.BracedInitializerIndentWidth = 2;
Style.ColumnLimit = 123;
return Style;
}());
@@ -1460,6 +1463,7 @@ TEST(ConfigParseTest, GetStyleOfFile) {
ASSERT_TRUE(static_cast<bool>(Style9));
ASSERT_EQ(*Style9, [] {
auto Style = getLLVMStyle();
+ Style.BracedInitializerIndentWidth = 2;
Style.ColumnLimit = 123;
Style.IndentWidth = 7;
return Style;
More information about the cfe-commits
mailing list