From 662e3c8b8c5e944d83ec402582a4cac1429636df Mon Sep 17 00:00:00 2001 From: Dmitry-Me Date: Mon, 7 Sep 2015 18:35:15 +0300 Subject: [PATCH] Omit unneeded match checks --- lib/checkother.cpp | 4 ++-- lib/checkstring.cpp | 4 ++-- lib/tokenize.cpp | 6 +++++- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/lib/checkother.cpp b/lib/checkother.cpp index bafcf79b5..d871ef7f5 100644 --- a/lib/checkother.cpp +++ b/lib/checkother.cpp @@ -933,7 +933,7 @@ void CheckOther::invalidFunctionUsage() for (std::size_t i = 0; i < functions; ++i) { const Scope * scope = symbolDatabase->functionScopes[i]; for (const Token* tok = scope->classStart->next(); tok != scope->classEnd; tok = tok->next()) { - if (!Token::Match(tok, "%name% ( !!)")) + if (!tok->isName() || !Token::Match(tok, "%name% ( !!)")) continue; const Token * const functionToken = tok; int argnr = 1; @@ -2605,7 +2605,7 @@ void CheckOther::checkInterlockedDecrement() } for (const Token *tok = _tokenizer->tokens(); tok; tok = tok->next()) { - if (Token::Match(tok, "InterlockedDecrement ( & %name% ) ; if ( %name%|!|0")) { + if (tok->isName() && Token::Match(tok, "InterlockedDecrement ( & %name% ) ; if ( %name%|!|0")) { const Token* interlockedVarTok = tok->tokAt(3); const Token* checkStartTok = interlockedVarTok->tokAt(5); if ((Token::Match(checkStartTok, "0 %comp% %name% )") && checkStartTok->strAt(2) == interlockedVarTok->str()) || diff --git a/lib/checkstring.cpp b/lib/checkstring.cpp index cc36b46ae..16ff8dc0f 100644 --- a/lib/checkstring.cpp +++ b/lib/checkstring.cpp @@ -81,7 +81,7 @@ void CheckString::checkAlwaysTrueOrFalseStringCompare() return; for (const Token* tok = _tokenizer->tokens(); tok; tok = tok->next()) { - if (Token::Match(tok, "memcmp|strncmp|strcmp|stricmp|strverscmp|bcmp|strcmpi|strcasecmp|strncasecmp|strncasecmp_l|strcasecmp_l|wcsncasecmp|wcscasecmp|wmemcmp|wcscmp|wcscasecmp_l|wcsncasecmp_l|wcsncmp|_mbscmp|_memicmp|_memicmp_l|_stricmp|_wcsicmp|_mbsicmp|_stricmp_l|_wcsicmp_l|_mbsicmp_l (")) { + if (tok->isName() && Token::Match(tok, "memcmp|strncmp|strcmp|stricmp|strverscmp|bcmp|strcmpi|strcasecmp|strncasecmp|strncasecmp_l|strcasecmp_l|wcsncasecmp|wcscasecmp|wmemcmp|wcscmp|wcscasecmp_l|wcsncasecmp_l|wcsncmp|_mbscmp|_memicmp|_memicmp_l|_stricmp|_wcsicmp|_mbsicmp|_stricmp_l|_wcsicmp_l|_mbsicmp_l (")) { if (Token::Match(tok->tokAt(2), "%str% , %str% ,|)")) { const std::string &str1 = tok->strAt(2); const std::string &str2 = tok->strAt(4); @@ -100,7 +100,7 @@ void CheckString::checkAlwaysTrueOrFalseStringCompare() alwaysTrueStringVariableCompareError(tok, str1, str2); tok = tok->tokAt(13); } - } else if (Token::Match(tok, "QString :: compare ( %str% , %str% )")) { + } else if (tok->isName() && Token::Match(tok, "QString :: compare ( %str% , %str% )")) { const std::string &str1 = tok->strAt(4); const std::string &str2 = tok->strAt(6); alwaysTrueFalseStringCompareError(tok, str1, str2); diff --git a/lib/tokenize.cpp b/lib/tokenize.cpp index 9dedb2808..1da5cd3de 100644 --- a/lib/tokenize.cpp +++ b/lib/tokenize.cpp @@ -2051,7 +2051,7 @@ void Tokenizer::simplifyArrayAccessSyntax() { // 0[a] -> a[0] for (Token *tok = list.front(); tok; tok = tok->next()) { - if (Token::Match(tok, "%num% [ %name% ]")) { + if (tok->isNumber() && Token::Match(tok, "%num% [ %name% ]")) { std::string temp = tok->str(); tok->str(tok->strAt(2)); tok->varId(tok->tokAt(2)->varId()); @@ -2128,6 +2128,8 @@ void Tokenizer::simplifyDoublePlusAndDoubleMinus() void Tokenizer::arraySize() { for (Token *tok = list.front(); tok; tok = tok->next()) { + if (!tok->isName() || !Token::Match( tok, "%name% [ ] =" ) ) + continue; bool addlength = false; if (Token::Match(tok, "%name% [ ] = { %str% } ;")) { Token *t = tok->tokAt(3); @@ -8762,6 +8764,8 @@ void Tokenizer::simplifyStructDecl() // Add names for anonymous structs for (Token *tok = list.front(); tok; tok = tok->next()) { + if(!tok->isName() ) + continue; // check for anonymous struct/union if (Token::Match(tok, "struct|union {")) { if (Token::Match(tok->next()->link(), "} *|&| %type% ,|;|[")) {