From 064235bfad5868f92e1a52410cabf2083a328f36 Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Thu, 18 Apr 2024 18:28:56 +0200 Subject: [PATCH 1/2] Update checkunusedvar.cpp --- lib/checkunusedvar.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/checkunusedvar.cpp b/lib/checkunusedvar.cpp index 15f989d8a99..afc713b1edb 100644 --- a/lib/checkunusedvar.cpp +++ b/lib/checkunusedvar.cpp @@ -1214,7 +1214,9 @@ void CheckUnusedVar::checkFunctionVariableUsage() const bool isPointer = tok->valueType() && (tok->valueType()->pointer || tok->valueType()->type == ValueType::SMART_POINTER); if (tok->isName()) { - if (isRaiiClass(tok->valueType(), tok->isCpp(), false)) + if (isRaiiClass(tok->valueType(), tok->isCpp(), false) || + (tok->valueType() && tok->valueType()->type == ValueType::RECORD && + (!tok->valueType()->typeScope || !isRecordTypeWithoutSideEffects(tok->valueType()->typeScope->definedType)))) continue; tok = tok->next(); } From e25dd2428832e38a997ba2c33cf4d7c5a486dccf Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Thu, 18 Apr 2024 18:31:48 +0200 Subject: [PATCH 2/2] Update testunusedvar.cpp --- test/testunusedvar.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/testunusedvar.cpp b/test/testunusedvar.cpp index d6b1ba8dc5d..f9d37838763 100644 --- a/test/testunusedvar.cpp +++ b/test/testunusedvar.cpp @@ -142,6 +142,7 @@ class TestUnusedVar : public TestFixture { TEST_CASE(localvar68); TEST_CASE(localvar69); TEST_CASE(localvar70); + TEST_CASE(localvar71); TEST_CASE(localvarloops); // loops TEST_CASE(localvaralias1); TEST_CASE(localvaralias2); // ticket #1637 @@ -3906,6 +3907,12 @@ class TestUnusedVar : public TestFixture { ASSERT_EQUALS("", errout_str()); } + void localvar71() { + functionVariableUsage("struct A { explicit A(int i); };\n" // #12363 + "void f() { A a(0); }\n"); + ASSERT_EQUALS("", errout_str()); + } + void localvarloops() { // loops functionVariableUsage("void fun(int c) {\n"