[clang] [clang-format] Add support for additional C++ declaration specifiers in QualifierOrder (PR #160853)
via cfe-commits
cfe-commits at lists.llvm.org
Fri Sep 26 09:12:46 PDT 2025
github-actions[bot] wrote:
<!--LLVM CODE FORMAT COMMENT: {clang-format}-->
:warning: C/C++ code formatter, clang-format found issues in your code. :warning:
<details>
<summary>
You can test this locally with the following command:
</summary>
``````````bash
git-clang-format --diff origin/main HEAD --extensions cpp -- clang/lib/Format/QualifierAlignmentFixer.cpp clang/unittests/Format/QualifierFixerTest.cpp
``````````
:warning:
The reproduction instructions above might return results for more than one PR
in a stack if you are using a stacked PR workflow. You can limit the results by
changing `origin/main` to the base branch/commit you want to compare against.
:warning:
</details>
<details>
<summary>
View the diff from clang-format here.
</summary>
``````````diff
diff --git a/clang/unittests/Format/QualifierFixerTest.cpp b/clang/unittests/Format/QualifierFixerTest.cpp
index 090a97607..a993cb96f 100644
--- a/clang/unittests/Format/QualifierFixerTest.cpp
+++ b/clang/unittests/Format/QualifierFixerTest.cpp
@@ -52,12 +52,15 @@ TEST_F(QualifierFixerTest, RotateTokens) {
tok::kw_friend);
EXPECT_EQ(LeftRightQualifierAlignmentFixer::getTokenFromQualifier("typedef"),
tok::kw_typedef);
- EXPECT_EQ(LeftRightQualifierAlignmentFixer::getTokenFromQualifier("consteval"),
- tok::kw_consteval);
- EXPECT_EQ(LeftRightQualifierAlignmentFixer::getTokenFromQualifier("constinit"),
- tok::kw_constinit);
- EXPECT_EQ(LeftRightQualifierAlignmentFixer::getTokenFromQualifier("thread_local"),
- tok::kw_thread_local);
+ EXPECT_EQ(
+ LeftRightQualifierAlignmentFixer::getTokenFromQualifier("consteval"),
+ tok::kw_consteval);
+ EXPECT_EQ(
+ LeftRightQualifierAlignmentFixer::getTokenFromQualifier("constinit"),
+ tok::kw_constinit);
+ EXPECT_EQ(
+ LeftRightQualifierAlignmentFixer::getTokenFromQualifier("thread_local"),
+ tok::kw_thread_local);
EXPECT_EQ(LeftRightQualifierAlignmentFixer::getTokenFromQualifier("extern"),
tok::kw_extern);
EXPECT_EQ(LeftRightQualifierAlignmentFixer::getTokenFromQualifier("mutable"),
@@ -1097,16 +1100,18 @@ TEST_F(QualifierFixerTest, IsQualifierType) {
TestLexer lexer{Allocator, Buffers};
const auto LangOpts = getFormattingLangOpts();
- auto Tokens = lexer.lex(
- "const static inline restrict int double long constexpr friend "
- "typedef consteval constinit thread_local extern mutable signed unsigned short decltype explicit");
+ auto Tokens =
+ lexer.lex("const static inline restrict int double long constexpr friend "
+ "typedef consteval constinit thread_local extern mutable "
+ "signed unsigned short decltype explicit");
ASSERT_EQ(Tokens.size(), 20u) << Tokens;
// Test that all tokens are recognized
for (size_t i = 0; i < 20; ++i) {
- EXPECT_TRUE(isConfiguredQualifierOrType(Tokens[i], ConfiguredTokens, LangOpts))
+ EXPECT_TRUE(
+ isConfiguredQualifierOrType(Tokens[i], ConfiguredTokens, LangOpts))
<< "Token " << i << " should be recognized";
- EXPECT_TRUE(isQualifierOrType(Tokens[i], LangOpts))
+ EXPECT_TRUE(isQualifierOrType(Tokens[i], LangOpts))
<< "Token " << i << " should be recognized by isQualifierOrType";
}
@@ -1400,60 +1405,65 @@ TEST_F(QualifierFixerTest, TemplatesLeft) {
TEST_F(QualifierFixerTest, NewQualifierSupport) {
FormatStyle Style = getLLVMStyle();
Style.QualifierAlignment = FormatStyle::QAS_Custom;
-
+
// Test typedef qualifier
Style.QualifierOrder = {"typedef", "type"};
verifyFormat("typedef int MyInt;", Style);
-
+
// Test consteval qualifier
Style.QualifierOrder = {"consteval", "type"};
verifyFormat("consteval int func();", "int consteval func();", Style);
-
+
// Test constinit qualifier
Style.QualifierOrder = {"constinit", "static", "type"};
- verifyFormat("constinit static int var = 10;", "static constinit int var = 10;", Style);
-
+ verifyFormat("constinit static int var = 10;",
+ "static constinit int var = 10;", Style);
+
// Test thread_local qualifier
Style.QualifierOrder = {"thread_local", "static", "type"};
- verifyFormat("thread_local static int counter;", "static thread_local int counter;", Style);
-
+ verifyFormat("thread_local static int counter;",
+ "static thread_local int counter;", Style);
+
// Test extern qualifier
Style.QualifierOrder = {"extern", "type"};
verifyFormat("extern int global_var;", "int extern global_var;", Style);
-
+
// Test mutable qualifier
Style.QualifierOrder = {"mutable", "type"};
verifyFormat("mutable int cache;", "int mutable cache;", Style);
-
+
// Test signed/unsigned qualifiers
Style.QualifierOrder = {"signed", "type"};
verifyFormat("signed int num;", "int signed num;", Style);
Style.QualifierOrder = {"unsigned", "type"};
verifyFormat("unsigned int num;", "int unsigned num;", Style);
-
+
// Test long/short qualifiers
Style.QualifierOrder = {"long", "type"};
verifyFormat("long int num;", "int long num;", Style);
Style.QualifierOrder = {"short", "type"};
verifyFormat("short int num;", "int short num;", Style);
-
+
// Test decltype qualifier
Style.QualifierOrder = {"decltype", "type"};
- // Note: decltype is typically used with parentheses and doesn't usually get reordered
- // This test mainly verifies it's recognized as a qualifier
-
- // Test explicit qualifier
+ // Note: decltype is typically used with parentheses and doesn't usually get
+ // reordered This test mainly verifies it's recognized as a qualifier
+
+ // Test explicit qualifier
Style.QualifierOrder = {"explicit", "type"};
- // Note: explicit is typically used with constructors and doesn't usually get reordered
- // This test mainly verifies it's recognized as a qualifier
-
+ // Note: explicit is typically used with constructors and doesn't usually get
+ // reordered This test mainly verifies it's recognized as a qualifier
+
// Test complex combination with new qualifiers
Style.QualifierOrder = {"extern", "thread_local", "static", "constexpr",
- "inline", "unsigned", "long", "type",
- "const", "volatile"};
-
- verifyFormat("extern thread_local static constexpr inline unsigned long int const volatile var;",
- "volatile const extern constexpr thread_local static inline unsigned long int var;", Style);
+ "inline", "unsigned", "long", "type",
+ "const", "volatile"};
+
+ verifyFormat("extern thread_local static constexpr inline unsigned long int "
+ "const volatile var;",
+ "volatile const extern constexpr thread_local static inline "
+ "unsigned long int var;",
+ Style);
}
TEST_F(QualifierFixerTest, Ranges) {
``````````
</details>
https://github.com/llvm/llvm-project/pull/160853
More information about the cfe-commits
mailing list