Skip to content

Commit cb3a605

Browse files
authored
[clang-format] Fix a bug in isStartOfName() on macro definitions (#72768)
Fixed #72751.
1 parent 5860d24 commit cb3a605

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

clang/lib/Format/TokenAnnotator.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2206,8 +2206,10 @@ class AnnotatingParser {
22062206
return false;
22072207

22082208
if (const auto *NextNonComment = Tok.getNextNonComment();
2209-
!NextNonComment || NextNonComment->isPointerOrReference() ||
2210-
NextNonComment->isOneOf(tok::identifier, tok::string_literal)) {
2209+
(!NextNonComment && !Line.InMacroBody) ||
2210+
(NextNonComment &&
2211+
(NextNonComment->isPointerOrReference() ||
2212+
NextNonComment->isOneOf(tok::identifier, tok::string_literal)))) {
22112213
return false;
22122214
}
22132215

clang/unittests/Format/TokenAnnotatorTest.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2390,7 +2390,7 @@ TEST_F(TokenAnnotatorTest, UnderstandsDoWhile) {
23902390
EXPECT_TOKEN(Tokens[4], tok::kw_while, TT_DoWhile);
23912391
}
23922392

2393-
TEST_F(TokenAnnotatorTest, NotStartOfName) {
2393+
TEST_F(TokenAnnotatorTest, StartOfName) {
23942394
auto Tokens = annotate("#pragma clang diagnostic push");
23952395
ASSERT_EQ(Tokens.size(), 6u) << Tokens;
23962396
EXPECT_TOKEN(Tokens[2], tok::identifier, TT_Unknown);
@@ -2402,6 +2402,12 @@ TEST_F(TokenAnnotatorTest, NotStartOfName) {
24022402
EXPECT_TOKEN(Tokens[2], tok::identifier, TT_Unknown);
24032403
EXPECT_TOKEN(Tokens[3], tok::identifier, TT_Unknown);
24042404
EXPECT_TOKEN(Tokens[4], tok::identifier, TT_Unknown);
2405+
2406+
Tokens = annotate("#define FOO Foo foo");
2407+
ASSERT_EQ(Tokens.size(), 6u) << Tokens;
2408+
EXPECT_TOKEN(Tokens[2], tok::identifier, TT_Unknown);
2409+
EXPECT_TOKEN(Tokens[3], tok::identifier, TT_Unknown);
2410+
EXPECT_TOKEN(Tokens[4], tok::identifier, TT_StartOfName);
24052411
}
24062412

24072413
} // namespace

0 commit comments

Comments
 (0)