Skip to content

Commit dcebe29

Browse files
authored
[clang-format] Fix a bug in annotating StartOfName (#99791)
Fixes #99758.
1 parent 5c83498 commit dcebe29

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

clang/lib/Format/TokenAnnotator.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2625,8 +2625,10 @@ class AnnotatingParser {
26252625
return false;
26262626

26272627
// int a or auto a.
2628-
if (PreviousNotConst->isOneOf(tok::identifier, tok::kw_auto))
2628+
if (PreviousNotConst->isOneOf(tok::identifier, tok::kw_auto) &&
2629+
PreviousNotConst->isNot(TT_StatementAttributeLikeMacro)) {
26292630
return true;
2631+
}
26302632

26312633
// *a or &a or &&a.
26322634
if (PreviousNotConst->is(TT_PointerOrReference))

clang/unittests/Format/TokenAnnotatorTest.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2125,6 +2125,13 @@ TEST_F(TokenAnnotatorTest, UnderstandsTrailingReturnArrow) {
21252125
ASSERT_EQ(Tokens.size(), 21u) << Tokens;
21262126
EXPECT_TOKEN(Tokens[13], tok::arrow, TT_Unknown);
21272127

2128+
auto Style = getLLVMStyle();
2129+
Style.StatementAttributeLikeMacros.push_back("emit");
2130+
Tokens = annotate("emit foo()->bar;", Style);
2131+
ASSERT_EQ(Tokens.size(), 8u) << Tokens;
2132+
EXPECT_TOKEN(Tokens[0], tok::identifier, TT_StatementAttributeLikeMacro);
2133+
EXPECT_TOKEN(Tokens[4], tok::arrow, TT_Unknown);
2134+
21282135
// Mixed
21292136
Tokens = annotate("auto f() -> int { auto a = b()->c; }");
21302137
ASSERT_EQ(Tokens.size(), 18u) << Tokens;
@@ -2950,6 +2957,13 @@ TEST_F(TokenAnnotatorTest, StartOfName) {
29502957
ASSERT_EQ(Tokens.size(), 7u) << Tokens;
29512958
EXPECT_TOKEN(Tokens[0], tok::at, TT_ObjCDecl);
29522959
EXPECT_TOKEN(Tokens[2], tok::identifier, TT_StartOfName);
2960+
2961+
auto Style = getLLVMStyle();
2962+
Style.StatementAttributeLikeMacros.push_back("emit");
2963+
Tokens = annotate("emit foo = 0;", Style);
2964+
ASSERT_EQ(Tokens.size(), 6u) << Tokens;
2965+
EXPECT_TOKEN(Tokens[0], tok::identifier, TT_StatementAttributeLikeMacro);
2966+
EXPECT_TOKEN(Tokens[1], tok::identifier, TT_Unknown);
29532967
}
29542968

29552969
TEST_F(TokenAnnotatorTest, BraceKind) {

0 commit comments

Comments
 (0)