Skip to content

Commit 6980d97

Browse files
authored
[clang-format] Fix a bug in annotating ClassHeadName (llvm#125326)
1 parent 648981f commit 6980d97

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

clang/lib/Format/UnwrappedLineParser.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4106,7 +4106,7 @@ void UnwrappedLineParser::parseRecord(bool ParseAsExpr) {
41064106
if (AngleNestingLevel == 0) {
41074107
if (FormatTok->is(tok::colon)) {
41084108
IsDerived = true;
4109-
} else if (FormatTok->is(tok::identifier) &&
4109+
} else if (!IsDerived && FormatTok->is(tok::identifier) &&
41104110
FormatTok->Previous->is(tok::coloncolon)) {
41114111
ClassName = FormatTok;
41124112
} else if (FormatTok->is(tok::l_paren) &&

clang/unittests/Format/TokenAnnotatorTest.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3406,6 +3406,13 @@ TEST_F(TokenAnnotatorTest, BraceKind) {
34063406
EXPECT_BRACE_KIND(Tokens[7], BK_Block);
34073407
EXPECT_BRACE_KIND(Tokens[8], BK_Block);
34083408

3409+
Tokens = annotate("struct Foo<int> : Base::Bar {};");
3410+
ASSERT_EQ(Tokens.size(), 13u) << Tokens;
3411+
EXPECT_TOKEN(Tokens[1], tok::identifier, TT_ClassHeadName);
3412+
EXPECT_TOKEN(Tokens[8], tok::identifier, TT_Unknown); // Not TT_ClassHeadName.
3413+
EXPECT_BRACE_KIND(Tokens[9], BK_Block);
3414+
EXPECT_BRACE_KIND(Tokens[10], BK_Block);
3415+
34093416
Tokens = annotate("struct Foo final {};");
34103417
ASSERT_EQ(Tokens.size(), 7u) << Tokens;
34113418
EXPECT_TOKEN(Tokens[1], tok::identifier, TT_ClassHeadName);

0 commit comments

Comments
 (0)