Skip to content

Commit 6d21a59

Browse files
committed
Amend
1 parent 11ab940 commit 6d21a59

File tree

1 file changed

+15
-17
lines changed

1 file changed

+15
-17
lines changed

lib/tokenize.cpp

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8192,7 +8192,7 @@ void Tokenizer::validateC() const
81928192
syntaxErrorC(tok, "template<...");
81938193
if (Token::Match(tok, "%name% :: %name%"))
81948194
syntaxErrorC(tok, tok->str() + tok->strAt(1) + tok->strAt(2));
8195-
if (Token::Match(tok, "class|namespace %name% [:{]"))
8195+
if (Token::Match(tok, "class|namespace %name% :|::|{"))
81968196
syntaxErrorC(tok, tok->str() + tok->strAt(1) + tok->strAt(2));
81978197
}
81988198
}
@@ -8708,7 +8708,8 @@ void Tokenizer::findGarbageCode() const
87088708
syntaxError(tok);
87098709
if (Token::Match(tok, "typedef [,;:]"))
87108710
syntaxError(tok);
8711-
if (Token::Match(tok, "! %comp%"))
8711+
if (Token::Match(tok, "!|~ %comp%") &&
8712+
!(isCPP() && tok->strAt(1) == ">" && Token::simpleMatch(tok->tokAt(-1), "operator")))
87128713
syntaxError(tok);
87138714
if (Token::Match(tok, "] %name%") && (!isCPP() || !(tok->tokAt(-1) && Token::simpleMatch(tok->tokAt(-2), "delete [")))) {
87148715
if (tok->next()->isUpperCaseName())
@@ -8782,30 +8783,27 @@ void Tokenizer::findGarbageCode() const
87828783
// Garbage templates..
87838784
if (isCPP()) {
87848785
for (const Token *tok = tokens(); tok; tok = tok->next()) {
8785-
if (Token::simpleMatch(tok, "< >")) {
8786-
if (!(Token::Match(tok->tokAt(-1), "%name%") || (tok->tokAt(-1) && Token::Match(tok->tokAt(-2), "operator %op%"))))
8787-
syntaxError(tok);
8788-
if (!tok->tokAt(-1) || tok->tokAt(-1)->isLiteral())
8789-
syntaxError(tok);
8790-
}
8786+
if (Token::simpleMatch(tok, "< >") && !(Token::Match(tok->tokAt(-1), "%name%") || (tok->tokAt(-1) && Token::Match(tok->tokAt(-2), "operator %op%"))))
8787+
syntaxError(tok);
8788+
if (Token::simpleMatch(tok, ": template") && !Token::Match(tok->tokAt(-1), "public|private|protected"))
8789+
syntaxError(tok);
87918790
if (!Token::simpleMatch(tok, "template <"))
87928791
continue;
87938792
if (!tok->tokAt(2) || tok->tokAt(2)->isLiteral())
87948793
syntaxError(tok);
8795-
if (tok->previous() && !Token::Match(tok->previous(), ":|;|{|}|)|>|\"C++\"")) {
8794+
if (tok->previous() && !Token::Match(tok->previous(), ":|,|;|{|}|)|<|>|\"C++\"")) {
87968795
if (tok->previous()->isUpperCaseName())
87978796
unknownMacroError(tok->previous());
87988797
else
87998798
syntaxError(tok);
88008799
}
8801-
const Token * const tok1 = tok;
8802-
tok = tok->next()->findClosingBracket();
8803-
if (!tok)
8804-
syntaxError(tok1);
8805-
if (!Token::Match(tok, ">|>> ::|...| %name%") &&
8806-
!Token::Match(tok, ">|>> [ [ %name%") &&
8807-
!Token::Match(tok, "> >|*"))
8808-
syntaxError(tok->next() ? tok->next() : tok1);
8800+
const Token * const tok1 = tok->next()->findClosingBracket();
8801+
if (!tok1)
8802+
syntaxError(tok);
8803+
if (!Token::Match(tok1, ">|>> ::|...| %name%") &&
8804+
!Token::Match(tok1, ">|>> [ [ %name%") &&
8805+
!Token::Match(tok1, "> >|*"))
8806+
syntaxError(tok1->next() ? tok1->next() : tok);
88098807
}
88108808
}
88118809

0 commit comments

Comments
 (0)