From 93ebdca313f2b65c40ef37a8389cb9ec6445352c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Fri, 3 Dec 2010 18:45:49 +0100 Subject: [PATCH] Fixed #2264 (False positive: variable assigned value that is never used) --- lib/checkother.cpp | 2 ++ test/testunusedvar.cpp | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/lib/checkother.cpp b/lib/checkother.cpp index 6e0487285..2763be0fb 100644 --- a/lib/checkother.cpp +++ b/lib/checkother.cpp @@ -1650,6 +1650,8 @@ void CheckOther::functionVariableUsage() variables.writeAliases(tok->varId()); variables.read(tok->varId()); } + else if (tok->varId() != varid1 && Token::Match(tok, "%var% . %var%")) + variables.use(tok->varId()); } const Token *equal = tok->next(); diff --git a/test/testunusedvar.cpp b/test/testunusedvar.cpp index 4de518c67..df10d576c 100644 --- a/test/testunusedvar.cpp +++ b/test/testunusedvar.cpp @@ -76,6 +76,7 @@ private: TEST_CASE(localvar27); // ticket #2160 TEST_CASE(localvar28); // ticket #2205 TEST_CASE(localvar29); // ticket #2206 (array initialization) + TEST_CASE(localvar30); TEST_CASE(localvaralias1); TEST_CASE(localvaralias2); // ticket #1637 TEST_CASE(localvaralias3); // ticket #1639 @@ -1305,6 +1306,15 @@ private: ASSERT_EQUALS("", errout.str()); } + void localvar30() // ticket #2264 + { + functionVariableUsage("void f() {\n" + " Engine *engine = e;\n" + " x->engine = engine->clone();\n" + "}\n"); + ASSERT_EQUALS("", errout.str()); + } + void localvaralias1() { functionVariableUsage("void foo()\n"