Skip to content

Commit deec7fb

Browse files
authored
[clang-format] Correctly annotate tok::star in braced list (llvm#138389)
Fix llvm#138382
1 parent 74d921c commit deec7fb

File tree

2 files changed

+13
-4
lines changed

2 files changed

+13
-4
lines changed

clang/lib/Format/TokenAnnotator.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3103,10 +3103,14 @@ class AnnotatingParser {
31033103
// Or expressions like:
31043104
// width * height * length
31053105
if (NextToken->Tok.isAnyIdentifier()) {
3106-
const FormatToken *NextNextToken = NextToken->getNextNonComment();
3107-
if (NextNextToken && (NextNextToken->is(tok::arrow) ||
3108-
NextNextToken->isPointerOrReference())) {
3109-
return TT_BinaryOperator;
3106+
auto *NextNextToken = NextToken->getNextNonComment();
3107+
if (NextNextToken) {
3108+
if (NextNextToken->is(tok::arrow))
3109+
return TT_BinaryOperator;
3110+
if (NextNextToken->isPointerOrReference()) {
3111+
NextNextToken->setFinalizedType(TT_BinaryOperator);
3112+
return TT_BinaryOperator;
3113+
}
31103114
}
31113115
}
31123116

clang/unittests/Format/TokenAnnotatorTest.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -406,6 +406,11 @@ TEST_F(TokenAnnotatorTest, UnderstandsUsesOfStarAndAmp) {
406406
ASSERT_EQ(Tokens.size(), 16u) << Tokens;
407407
EXPECT_TOKEN(Tokens[9], tok::star, TT_BinaryOperator);
408408
EXPECT_TOKEN(Tokens[11], tok::star, TT_BinaryOperator);
409+
410+
Tokens = annotate("float foo[3] = {M * H * H, H * M * H, H * H * M};");
411+
ASSERT_EQ(Tokens.size(), 27u) << Tokens;
412+
EXPECT_TOKEN(Tokens[16], tok::star, TT_BinaryOperator);
413+
EXPECT_TOKEN(Tokens[22], tok::star, TT_BinaryOperator);
409414
}
410415

411416
TEST_F(TokenAnnotatorTest, UnderstandsUsesOfPlusAndMinus) {

0 commit comments

Comments
 (0)