From 585b9a0c33e17b0300ace15d707b977b605c0839 Mon Sep 17 00:00:00 2001 From: chrchr-github Date: Mon, 25 May 2026 21:40:16 +0200 Subject: [PATCH 1/2] Fix #14783 FN unusedVariable with templated type (default constructor, regression) --- lib/checkunusedvar.cpp | 4 ---- test/testunusedvar.cpp | 10 ++++++++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/checkunusedvar.cpp b/lib/checkunusedvar.cpp index 6dd98de078e..eb533bbe692 100644 --- a/lib/checkunusedvar.cpp +++ b/lib/checkunusedvar.cpp @@ -1160,10 +1160,6 @@ void CheckUnusedVar::checkFunctionVariableUsage_iterateScopes(const Scope* const variables.read(tok2->varId(), tok); } } - } else if (tok->variable() && tok->variable()->isClass() && tok->variable()->type() && - (tok->variable()->type()->needInitialization == Type::NeedInitialization::False) && - tok->strAt(1) == ";") { - variables.write(tok->varId(), tok); } } } diff --git a/test/testunusedvar.cpp b/test/testunusedvar.cpp index 13d288a3fdd..353be88fb26 100644 --- a/test/testunusedvar.cpp +++ b/test/testunusedvar.cpp @@ -7070,6 +7070,15 @@ class TestUnusedVar : public TestFixture { " S<0> s;\n" "}\n"); ASSERT_EQUALS("[test.cpp:6:10]: (style) Unused variable: s [unusedVariable]\n", errout_str()); + + functionVariableUsage("template \n" + "struct A {\n" + " A() = default;\n" + "};\n" + "void f() {\n" + " A a;\n" + "}\n"); + ASSERT_EQUALS("[test.cpp:6:12]: (style) Unused variable: a [unusedVariable]\n", errout_str()); } void localvarFuncPtr() { @@ -7158,6 +7167,7 @@ class TestUnusedVar : public TestFixture { "void f() {\n" " Y y;\n" "}"); // #4695 + ASSERT_EQUALS("[test.cpp:6:7]: (style) Unused variable: y [unusedVariable]\n", errout_str()); } void crash3() { From e95639c693381222ac39478ffab607ad6b9376b2 Mon Sep 17 00:00:00 2001 From: chrchr-github Date: Mon, 25 May 2026 21:42:32 +0200 Subject: [PATCH 2/2] Comment --- test/testunusedvar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/testunusedvar.cpp b/test/testunusedvar.cpp index 353be88fb26..5905c29b36f 100644 --- a/test/testunusedvar.cpp +++ b/test/testunusedvar.cpp @@ -7071,7 +7071,7 @@ class TestUnusedVar : public TestFixture { "}\n"); ASSERT_EQUALS("[test.cpp:6:10]: (style) Unused variable: s [unusedVariable]\n", errout_str()); - functionVariableUsage("template \n" + functionVariableUsage("template \n" // #14783 "struct A {\n" " A() = default;\n" "};\n"