release/21.x: [clang-format] Don't annotate class property specifiers as StartOfName (#153525)

This commit is contained in:
Owen Pan 2025-08-17 14:23:43 -07:00 committed by Tobias Hieta
parent fcb91597e2
commit 41cf77340d
No known key found for this signature in database
GPG Key ID: 44F2485E45D59042
2 changed files with 10 additions and 0 deletions

View File

@ -2590,6 +2590,9 @@ private:
if (!Tok.Previous || Tok.isNot(tok::identifier) || Tok.is(TT_ClassHeadName))
return false;
if (Tok.endsSequence(Keywords.kw_final, TT_ClassHeadName))
return false;
if ((Style.isJavaScript() || Style.isJava()) && Tok.is(Keywords.kw_extends))
return false;

View File

@ -618,6 +618,13 @@ TEST_F(TokenAnnotatorTest, UnderstandsStructs) {
EXPECT_TOKEN(Tokens[19], tok::l_brace, TT_StructLBrace);
EXPECT_TOKEN(Tokens[20], tok::r_brace, TT_StructRBrace);
Tokens = annotate("class Outer {\n"
" struct Inner final : Base {};\n"
"};");
ASSERT_EQ(Tokens.size(), 14u) << Tokens;
EXPECT_TOKEN(Tokens[5], tok::identifier, TT_Unknown); // Not TT_StartOfName
EXPECT_TOKEN(Tokens[6], tok::colon, TT_InheritanceColon);
constexpr StringRef Code{"struct EXPORT StructName {};"};
Tokens = annotate(Code);