Skip to content

Commit

Permalink
Fix #12176 false positive: unassignedVariable
Browse files Browse the repository at this point in the history
  • Loading branch information
chrchr-github committed Nov 13, 2023
1 parent 282c195 commit 01b250e
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 1 deletion.
3 changes: 2 additions & 1 deletion lib/checkunusedvar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1356,7 +1356,8 @@ void CheckUnusedVar::checkFunctionVariableUsage()
unassignedVariableError(usage._var->nameToken(), varname);
}
// variable has been read but not written
else if (!usage._write && !usage._allocateMemory && var && !var->isStlType() && !isEmptyType(var->type()))
else if (!usage._write && !usage._allocateMemory && var && !var->isStlType() && !isEmptyType(var->type()) &&
!(var->type() && var->type()->needInitialization == Type::NeedInitialization::False))
unassignedVariableError(usage._var->nameToken(), varname);
else if (!usage._var->isMaybeUnused() && !usage._modified && !usage._read && var) {
const Token* vnt = var->nameToken();
Expand Down
10 changes: 10 additions & 0 deletions test/testunusedvar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,7 @@ class TestUnusedVar : public TestFixture {
TEST_CASE(localvar67); // #9946
TEST_CASE(localvar68);
TEST_CASE(localvar69);
TEST_CASE(localvar70);
TEST_CASE(localvarloops); // loops
TEST_CASE(localvaralias1);
TEST_CASE(localvaralias2); // ticket #1637
Expand Down Expand Up @@ -3827,6 +3828,15 @@ class TestUnusedVar : public TestFixture {
ASSERT_EQUALS("", errout.str());
}

void localvar70() {
functionVariableUsage("struct S { int i = 0; };\n" // #12176
"void f(S s, int j) {\n"
" S s1;\n"
" if (s == s1) {}\n"
"}\n");
ASSERT_EQUALS("", errout.str());
}

void localvarloops() {
// loops
functionVariableUsage("void fun(int c) {\n"
Expand Down

0 comments on commit 01b250e

Please sign in to comment.