Fix #797 (false positive: variable scope when using function call)
This commit is contained in:
parent
d598bed1c6
commit
c3d56c1d13
|
@ -387,23 +387,7 @@ void CheckOther::checkVariableScope()
|
|||
{
|
||||
if (tok2->str() == "{")
|
||||
{
|
||||
int indentlevel2 = 0;
|
||||
for (tok = tok2; tok; tok = tok->next())
|
||||
{
|
||||
if (tok->str() == "{")
|
||||
{
|
||||
++indentlevel2;
|
||||
}
|
||||
if (tok->str() == "}")
|
||||
{
|
||||
--indentlevel2;
|
||||
if (indentlevel2 <= 0)
|
||||
{
|
||||
tok = tok->next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
tok = tok2->link();
|
||||
break;
|
||||
}
|
||||
if (Token::Match(tok2, "[,);]"))
|
||||
|
@ -415,11 +399,11 @@ void CheckOther::checkVariableScope()
|
|||
break;
|
||||
}
|
||||
|
||||
if (tok->str() == "{")
|
||||
else if (tok->str() == "{")
|
||||
{
|
||||
++indentlevel;
|
||||
}
|
||||
if (tok->str() == "}")
|
||||
else if (tok->str() == "}")
|
||||
{
|
||||
--indentlevel;
|
||||
if (indentlevel == 0)
|
||||
|
|
|
@ -53,6 +53,7 @@ public:
|
|||
checkOther.warningOldStylePointerCast();
|
||||
checkOther.checkUnsignedDivision();
|
||||
checkOther.checkCharVariable();
|
||||
checkOther.checkVariableScope();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -63,7 +64,6 @@ public:
|
|||
if (settings->_checkCodingStyle)
|
||||
{
|
||||
checkOther.warningRedundantCode();
|
||||
checkOther.checkVariableScope();
|
||||
checkOther.checkConstantFunctionParameter();
|
||||
checkOther.checkStructMemberUsage();
|
||||
checkOther.checkIncompleteStatement();
|
||||
|
|
|
@ -59,6 +59,7 @@ private:
|
|||
TEST_CASE(varScope4);
|
||||
TEST_CASE(varScope5);
|
||||
TEST_CASE(varScope6);
|
||||
TEST_CASE(varScope7);
|
||||
|
||||
TEST_CASE(nullpointer1);
|
||||
TEST_CASE(nullpointer2);
|
||||
|
@ -441,7 +442,6 @@ private:
|
|||
Tokenizer tokenizer;
|
||||
std::istringstream istr(code);
|
||||
tokenizer.tokenize(istr, "test.cpp");
|
||||
tokenizer.simplifyTokenList();
|
||||
|
||||
// Clear the error buffer..
|
||||
errout.str("");
|
||||
|
@ -582,6 +582,19 @@ private:
|
|||
ASSERT_EQUALS("", errout.str());
|
||||
}
|
||||
|
||||
void varScope7()
|
||||
{
|
||||
varScope("void f(int x)\n"
|
||||
"{\n"
|
||||
" int y = 0;\n"
|
||||
" b(y);\n"
|
||||
" if (x) {\n"
|
||||
" y++;\n"
|
||||
" }\n"
|
||||
"}\n");
|
||||
ASSERT_EQUALS("", errout.str());
|
||||
}
|
||||
|
||||
void checkNullPointer(const char code[])
|
||||
{
|
||||
// Tokenize..
|
||||
|
|
Loading…
Reference in New Issue