Skip to content

Conversation

@owenca
Copy link
Contributor

@owenca owenca commented May 4, 2025

Fix #61156

@llvmbot
Copy link
Member

llvmbot commented May 4, 2025

@llvm/pr-subscribers-clang-format

Author: Owen Pan (owenca)

Changes

Fix #61156


Full diff: https://github.com/llvm/llvm-project/pull/138440.diff

2 Files Affected:

  • (modified) clang/lib/Format/TokenAnnotator.cpp (+1-1)
  • (modified) clang/unittests/Format/TokenAnnotatorTest.cpp (+9-3)
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

@owenca owenca requested a review from HazardyKnusperkeks May 6, 2025 07:27
@owenca owenca merged commit 17ea830 into llvm:main May 7, 2025
11 checks passed
@owenca owenca deleted the 61156 branch May 7, 2025 02:36
GeorgeARM pushed a commit to GeorgeARM/llvm-project that referenced this pull request May 7, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[clang-format] There is no option to disable BreakInheritanceList and BreakConstructorInitializers

3 participants