Made missing comparison in loop check more generic (#3048)

This commit is contained in:
abhijit-sawant 2021-01-18 02:11:37 -05:00 committed by GitHub
parent 65395aeaa1
commit b97387db66
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 10 deletions

View File

@ -1732,8 +1732,6 @@ void CheckStl::missingComparison()
}
const Token *incrementToken = nullptr;
bool bComparedInAdvance = false;
// Parse loop..
for (const Token *tok3 = scope.bodyStart; tok3 != scope.bodyEnd; tok3 = tok3->next()) {
if (tok3->varId() == iteratorId) {
@ -1742,16 +1740,13 @@ void CheckStl::missingComparison()
tok3 = tok3->linkAt(6);
if (!tok3)
break;
} else if (Token::simpleMatch(tok3->astParent(), "++")) {
if (!bComparedInAdvance)
} else if (Token::simpleMatch(tok3->astParent(), "++"))
incrementToken = tok3;
else
bComparedInAdvance = false;
} else if (Token::simpleMatch(tok3->astParent(), "+")) {
if (Token::simpleMatch(tok3->astSibling(), "1")) {
else if (Token::simpleMatch(tok3->astParent(), "+")) {
if (Token::Match(tok3->astSibling(), "%num%")) {
const Token* tokenGrandParent = tok3->astParent()->astParent();
if (Token::Match(tokenGrandParent, "==|!="))
bComparedInAdvance = true;
break;
}
} else if (Token::Match(tok3->astParent(), "==|!="))
incrementToken = nullptr;

View File

@ -3004,8 +3004,11 @@ private:
check("void f(const std::vector<std::string> &v) {\n"
" for(std::vector<std::string>::const_iterator it = v.begin(); it != v.end(); ++it) {\n"
" if(it+1 != v.end())\n"
" if(it+2 != v.end())\n"
" {\n"
" ++it;\n"
" ++it;\n"
" }\n"
" }\n"
"}");
ASSERT_EQUALS("", errout.str());