@@ -2018,10 +2018,6 @@ private:
|
||||
(!Line.MightBeFunctionDecl || Current.NestingLevel != 0)) {
|
||||
Contexts.back().FirstStartOfName = &Current;
|
||||
Current.setType(TT_StartOfName);
|
||||
if (auto *PrevNonComment = Current.getPreviousNonComment();
|
||||
PrevNonComment && PrevNonComment->is(TT_StartOfName)) {
|
||||
PrevNonComment->setType(TT_Unknown);
|
||||
}
|
||||
} else if (Current.is(tok::semi)) {
|
||||
// Reset FirstStartOfName after finding a semicolon so that a for loop
|
||||
// with multiple increment statements is not confused with a for loop
|
||||
@@ -2210,7 +2206,8 @@ private:
|
||||
return false;
|
||||
|
||||
if (const auto *NextNonComment = Tok.getNextNonComment();
|
||||
!NextNonComment || NextNonComment->isPointerOrReference()) {
|
||||
!NextNonComment || NextNonComment->isPointerOrReference() ||
|
||||
NextNonComment->isOneOf(tok::identifier, tok::string_literal)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -2390,6 +2390,20 @@ TEST_F(TokenAnnotatorTest, UnderstandsDoWhile) {
|
||||
EXPECT_TOKEN(Tokens[4], tok::kw_while, TT_DoWhile);
|
||||
}
|
||||
|
||||
TEST_F(TokenAnnotatorTest, NotStartOfName) {
|
||||
auto Tokens = annotate("#pragma clang diagnostic push");
|
||||
ASSERT_EQ(Tokens.size(), 6u) << Tokens;
|
||||
EXPECT_TOKEN(Tokens[2], tok::identifier, TT_Unknown);
|
||||
EXPECT_TOKEN(Tokens[3], tok::identifier, TT_Unknown);
|
||||
EXPECT_TOKEN(Tokens[4], tok::identifier, TT_Unknown);
|
||||
|
||||
Tokens = annotate("#pragma clang diagnostic ignored \"-Wzero-length-array\"");
|
||||
ASSERT_EQ(Tokens.size(), 7u) << Tokens;
|
||||
EXPECT_TOKEN(Tokens[2], tok::identifier, TT_Unknown);
|
||||
EXPECT_TOKEN(Tokens[3], tok::identifier, TT_Unknown);
|
||||
EXPECT_TOKEN(Tokens[4], tok::identifier, TT_Unknown);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
} // namespace format
|
||||
} // namespace clang
|
||||
|
||||
Reference in New Issue
Block a user