diff --git a/lib/checkunusedvar.cpp b/lib/checkunusedvar.cpp index 6e9381657b0..3aa9b7a6d74 100644 --- a/lib/checkunusedvar.cpp +++ b/lib/checkunusedvar.cpp @@ -424,6 +424,9 @@ static const Token* doAssignment(Variables &variables, const Token *tok, bool de Variables::VariableUsage *var1 = variables.find(varid1); if (var1) { + if (var1->mType == Variables::pointerArray) + variables.use(varid1, tok); + // jump behind '=' tok = tok->next(); while (!tok->isAssignmentOp()) { @@ -567,8 +570,10 @@ static const Token* doAssignment(Variables &variables, const Token *tok, bool de } else if (var1->mType == Variables::standard && addressOf) { variables.alias(varid1, varid2, true); } else { - if ((var2->mType == Variables::pointer || var2->mType == Variables::pointerArray) && tok->strAt(1) == "[") + if (var2->mType == Variables::pointer || var2->mType == Variables::pointerArray) { + variables.alias(varid1, varid2, true); variables.readAliases(varid2, tok); + } variables.read(varid2, tok); } @@ -1393,7 +1398,6 @@ void CheckUnusedVar::checkFunctionVariableUsage() // skip things that are only partially implemented to prevent false positives if (usage.mType == Variables::pointerPointer || - usage.mType == Variables::pointerArray || usage.mType == Variables::referenceArray) continue; diff --git a/test/testunusedvar.cpp b/test/testunusedvar.cpp index 75fe4e85e1d..44bc750daaa 100644 --- a/test/testunusedvar.cpp +++ b/test/testunusedvar.cpp @@ -2876,25 +2876,25 @@ class TestUnusedVar : public TestFixture { "{\n" " int * i[2];\n" "}"); - TODO_ASSERT_EQUALS("[test.cpp:3:9]: (style) Unused variable: i [unusedVariable]\n", "", errout_str()); + ASSERT_EQUALS("[test.cpp:3:11]: (style) Unused variable: i [unusedVariable]\n", errout_str()); functionVariableUsage("void foo()\n" "{\n" " const int * i[2];\n" "}"); - TODO_ASSERT_EQUALS("[test.cpp:3:9]: (style) Unused variable: i [unusedVariable]\n", "", errout_str()); + ASSERT_EQUALS("[test.cpp:3:17]: (style) Unused variable: i [unusedVariable]\n", errout_str()); functionVariableUsage("void foo()\n" "{\n" " void * i[2];\n" "}"); - TODO_ASSERT_EQUALS("[test.cpp:3:9]: (style) Unused variable: i [unusedVariable]\n", "", errout_str()); + ASSERT_EQUALS("[test.cpp:3:12]: (style) Unused variable: i [unusedVariable]\n", errout_str()); functionVariableUsage("void foo()\n" "{\n" " const void * i[2];\n" "}"); - TODO_ASSERT_EQUALS("[test.cpp:3:9]: (style) Unused variable: i [unusedVariable]\n", "", errout_str()); + ASSERT_EQUALS("[test.cpp:3:18]: (style) Unused variable: i [unusedVariable]\n", errout_str()); functionVariableUsage("void foo()\n" "{\n"