From 6ec676fe6aad6520e89db940c32ef6c8a7f31eac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludvig=20Gunne=20Lindstr=C3=B6m?= Date: Tue, 28 Apr 2026 14:14:29 +0200 Subject: [PATCH 1/2] add test --- test/testunusedvar.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/testunusedvar.cpp b/test/testunusedvar.cpp index 13d288a3fdd..91ff14a3944 100644 --- a/test/testunusedvar.cpp +++ b/test/testunusedvar.cpp @@ -155,6 +155,7 @@ class TestUnusedVar : public TestFixture { TEST_CASE(localvar70); TEST_CASE(localvar71); TEST_CASE(localvar72); + TEST_CASE(localvar73); TEST_CASE(localvarloops); // loops TEST_CASE(localvaralias1); TEST_CASE(localvaralias2); // ticket #1637 @@ -4061,6 +4062,12 @@ class TestUnusedVar : public TestFixture { ASSERT_EQUALS("[test.cpp:4:12]: (style) Unused variable: mp [unusedVariable]\n", errout_str()); } + void localvar73() { + functionVariableUsage("struct S { S(); ~S(); };\n" + "void f() { auto s{ S() }; }\n"); + ASSERT_EQUALS("", errout_str()); + } + void localvarloops() { // loops functionVariableUsage("void fun(int c) {\n" From 01f6f39846ee53990b7de3513c755eac3ec65747 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludvig=20Gunne=20Lindstr=C3=B6m?= Date: Tue, 28 Apr 2026 15:23:35 +0200 Subject: [PATCH 2/2] fix --- lib/symboldatabase.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/symboldatabase.cpp b/lib/symboldatabase.cpp index 5905597c8c1..4d60aa90f46 100644 --- a/lib/symboldatabase.cpp +++ b/lib/symboldatabase.cpp @@ -6935,6 +6935,13 @@ void SymbolDatabase::setValueType(Token* tok, const ValueType& valuetype, const if (!parent->astOperand1()) return; + if (Token::Match(parent->astOperand1()->previous(), "auto %var% {")) { + ValueType vt(*valuetypePtr); + vt.reference = Reference::None; + parent->astOperand1()->setValueType(new ValueType(vt)); + } + + const ValueType *vt1 = parent->astOperand1()->valueType(); const ValueType *vt2 = parent->astOperand2() ? parent->astOperand2()->valueType() : nullptr;