Fixed #2286 (Variable 'ownKilled' is assigned a value that is never used)

This commit is contained in:
Daniel Marjamäki 2010-12-19 18:27:31 +01:00
parent 1cd6f16ecf
commit 02892499d2
2 changed files with 23 additions and 6 deletions

View File

@ -1616,7 +1616,7 @@ void CheckOther::functionVariableUsage()
if (Token::Match(tok->next(), "++|--"))
post = true;
unsigned int varid1 = tok->varId();
const unsigned int varid1 = tok->varId();
const Token *start = tok;
tok = tok->tokAt(doAssignment(variables, tok, dereference, scope));
@ -1649,13 +1649,20 @@ void CheckOther::functionVariableUsage()
}
Variables::VariableUsage *var2 = variables.find(tok->varId());
if (var2 && var2->_type == Variables::reference)
if (var2)
{
variables.writeAliases(tok->varId());
variables.read(tok->varId());
if (var2->_type == Variables::reference)
{
variables.writeAliases(tok->varId());
variables.read(tok->varId());
}
else if (tok->varId() != varid1 && Token::Match(tok, "%var% ."))
variables.use(tok->varId());
else if (tok->varId() != varid1 &&
var2->_type == Variables::standard &&
tok->strAt(-1) != "&")
variables.use(tok->varId());
}
else if (tok->varId() != varid1 && Token::Match(tok, "%var% . %var%"))
variables.use(tok->varId());
}
const Token *equal = tok->next();

View File

@ -78,6 +78,7 @@ private:
TEST_CASE(localvar28); // ticket #2205
TEST_CASE(localvar29); // ticket #2206 (array initialization)
TEST_CASE(localvar30);
TEST_CASE(localvar31); // ticket #2286
TEST_CASE(localvaralias1);
TEST_CASE(localvaralias2); // ticket #1637
TEST_CASE(localvaralias3); // ticket #1639
@ -1325,6 +1326,15 @@ private:
ASSERT_EQUALS("", errout.str());
}
void localvar31() // ticket #2286
{
functionVariableUsage("void f() {\n"
" int x = 0;\n"
" a.x = x - b;\n"
"}\n");
ASSERT_EQUALS("", errout.str());
}
void localvaralias1()
{
functionVariableUsage("void foo()\n"