[clang] [clang-format] Don't annotate enum colon as InheritanceColon (PR #138440)
Owen Pan via cfe-commits
cfe-commits at lists.llvm.org
Sat May 3 23:39:44 PDT 2025
https://github.com/owenca created https://github.com/llvm/llvm-project/pull/138440
Fix #61156
>From 90803c382ecb040e016034d5798d739739ece03a Mon Sep 17 00:00:00 2001
From: Owen Pan <owenpiano at gmail.com>
Date: Sat, 3 May 2025 23:38:18 -0700
Subject: [PATCH] [clang-format] Don't annotate enum colon as InheritanceColon
Fix #61156
---
clang/lib/Format/TokenAnnotator.cpp | 2 +-
clang/unittests/Format/TokenAnnotatorTest.cpp | 12 +++++++++---
2 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp
index caf386cffd25b..e549c98179d3e 100644
--- a/clang/lib/Format/TokenAnnotator.cpp
+++ b/clang/lib/Format/TokenAnnotator.cpp
@@ -1423,7 +1423,7 @@ class AnnotatingParser {
Tok->setType(TT_BitFieldColon);
} else if (Contexts.size() == 1 &&
!Line.First->isOneOf(tok::kw_enum, tok::kw_case,
- tok::kw_default)) {
+ tok::kw_default, tok::kw_typedef)) {
FormatToken *Prev = Tok->getPreviousNonComment();
if (!Prev)
break;
diff --git a/clang/unittests/Format/TokenAnnotatorTest.cpp b/clang/unittests/Format/TokenAnnotatorTest.cpp
index 0fb64ceec5c97..af54716783f54 100644
--- a/clang/unittests/Format/TokenAnnotatorTest.cpp
+++ b/clang/unittests/Format/TokenAnnotatorTest.cpp
@@ -3666,7 +3666,7 @@ TEST_F(TokenAnnotatorTest, BraceKind) {
getGoogleStyle(FormatStyle::LK_JavaScript));
ASSERT_EQ(Tokens.size(), 12u) << Tokens;
EXPECT_TOKEN(Tokens[3], tok::identifier, TT_ClassHeadName);
- EXPECT_TOKEN(Tokens[4], tok::identifier, TT_Unknown); // Not TT_StartOfName
+ EXPECT_TOKEN(Tokens[4], tok::identifier, TT_Unknown); // Not TT_StartOfName.
EXPECT_TOKEN(Tokens[8], tok::l_brace, TT_ClassLBrace);
EXPECT_BRACE_KIND(Tokens[8], BK_Block);
EXPECT_TOKEN(Tokens[9], tok::r_brace, TT_ClassRBrace);
@@ -3833,7 +3833,7 @@ TEST_F(TokenAnnotatorTest, CppOnlyKeywordInC) {
ASSERT_EQ(Tokens.size(), 8u) << Tokens;
EXPECT_TOKEN(Tokens[3], tok::identifier, TT_Unknown); // Not tok::kw_new
EXPECT_TOKEN(Tokens[4], tok::amp, TT_BinaryOperator);
- EXPECT_TOKEN(Tokens[3], tok::identifier, TT_Unknown); // Not TT_StartOfName
+ EXPECT_TOKEN(Tokens[3], tok::identifier, TT_Unknown); // Not TT_StartOfName.
}
TEST_F(TokenAnnotatorTest, FunctionTryBlock) {
@@ -3947,7 +3947,7 @@ TEST_F(TokenAnnotatorTest, VariableTemplate) {
EXPECT_TOKEN(Tokens[4], tok::identifier, TT_VariableTemplate);
EXPECT_TOKEN(Tokens[5], tok::less, TT_TemplateOpener);
EXPECT_TOKEN(Tokens[7], tok::greater, TT_TemplateCloser);
- EXPECT_TOKEN(Tokens[8], tok::r_paren, TT_Unknown); // Not TT_CastRParen
+ EXPECT_TOKEN(Tokens[8], tok::r_paren, TT_Unknown); // Not TT_CastRParen.
EXPECT_TOKEN(Tokens[9], tok::plus, TT_BinaryOperator);
}
@@ -4033,6 +4033,12 @@ TEST_F(TokenAnnotatorTest, UserDefinedLiteral) {
EXPECT_EQ(Tokens[3]->TokenText, "2_$");
}
+TEST_F(TokenAnnotatorTest, EnumColonInTypedef) {
+ auto Tokens = annotate("typedef enum : int {} foo;");
+ ASSERT_EQ(Tokens.size(), 9u) << Tokens;
+ EXPECT_TOKEN(Tokens[2], tok::colon, TT_Unknown); // Not TT_InheritanceColon.
+}
+
} // namespace
} // namespace format
} // namespace clang
More information about the cfe-commits
mailing list