[clang] [clang-format] Improve attribute (macro) handling for enums (PR #227461)

via cfe-commits cfe-commits at lists.llvm.org
Sun Oct 11 00:54:45 PDT 2026


=?utf-8?q?Björn_Schäpers?= <bjoern at hazardy.de>,
=?utf-8?q?Björn_Schäpers?= <bjoern at hazardy.de>
Message-ID:
In-Reply-To: <llvm.org/llvm/llvm-project/pull/227461 at github.com>


================
@@ -692,6 +692,34 @@ TEST_F(TokenAnnotatorTest, UnderstandsEnums) {
   ASSERT_EQ(Tokens.size(), 6u) << Tokens;
   EXPECT_TOKEN(Tokens[2], tok::l_brace, TT_EnumLBrace);
   EXPECT_TOKEN(Tokens[3], tok::r_brace, TT_EnumRBrace);
+
+  auto Style = getLLVMStyle();
+  Style.AttributeMacros = {"AttributeA", "AttributeB"};
+  Tokens = annotate("enum class AttributeA AttributeB Enum {};", Style);
+  ASSERT_EQ(Tokens.size(), 9u) << Tokens;
+  EXPECT_TOKEN(Tokens[2], tok::identifier, TT_AttributeMacro);
+  EXPECT_TOKEN(Tokens[3], tok::identifier, TT_AttributeMacro);
+  EXPECT_TOKEN(Tokens[5], tok::l_brace, TT_EnumLBrace);
+  EXPECT_TOKEN(Tokens[6], tok::r_brace, TT_EnumRBrace);
+
+  Tokens = annotate("enum class AttributeA [[nodiscard]] AttributeB Enum {};",
+                    Style);
+  ASSERT_EQ(Tokens.size(), 14u) << Tokens;
+  EXPECT_TOKEN(Tokens[2], tok::identifier, TT_AttributeMacro);
+  EXPECT_TOKEN(Tokens[3], tok::l_square, TT_AttributeLSquare);
+  EXPECT_TOKEN(Tokens[8], tok::identifier, TT_AttributeMacro);
----------------
owenca wrote:

Ditto.

https://github.com/llvm/llvm-project/pull/227461


More information about the cfe-commits mailing list