From d18e9bc6a6b8e9338543ef14b2d12c6abc917c61 Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Wed, 18 Feb 2026 11:30:27 +0100 Subject: [PATCH 1/7] Update checkunusedvar.cpp --- lib/checkunusedvar.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/checkunusedvar.cpp b/lib/checkunusedvar.cpp index 5819eed715e..25e501d5276 100644 --- a/lib/checkunusedvar.cpp +++ b/lib/checkunusedvar.cpp @@ -724,7 +724,6 @@ void CheckUnusedVar::checkFunctionVariableUsage_iterateScopes(const Scope* const type = Variables::pointer; else if (mTokenizer->isC() || i->typeEndToken()->isStandardType() || - i->isStlType() || mTokenizer->getSymbolDatabase()->isRecordTypeWithoutSideEffects(i->type()) || mSettings->library.detectContainer(i->typeStartToken()) || mSettings->library.getTypeCheck("unusedvar", i->typeStartToken()->str()) == Library::TypeCheck::check) From 71fdbf5c4d364cb1da4d6ea1df54665b390b91c4 Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Wed, 18 Feb 2026 11:31:54 +0100 Subject: [PATCH 2/7] Update testunusedvar.cpp --- test/testunusedvar.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/test/testunusedvar.cpp b/test/testunusedvar.cpp index 0a676d00218..c48122c1073 100644 --- a/test/testunusedvar.cpp +++ b/test/testunusedvar.cpp @@ -6597,6 +6597,11 @@ class TestUnusedVar : public TestFixture { " }\n" "}\n"); ASSERT_EQUALS("[test.cpp:2:23]: (style) Variable 's' is assigned a value that is never used. [unreadVariable]\n", errout_str()); + + functionVariableUsage("void f() {\n" // #14201 + " std::pair p; + "}\n"); + ASSERT_EQUALS("", errout_str()); } void localVarClass() { From 07b6dbe72f9369f9ac4b4f8e9ef83dd2f0794e0f Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Wed, 18 Feb 2026 11:53:46 +0100 Subject: [PATCH 3/7] Update testunusedvar.cpp --- test/testunusedvar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/testunusedvar.cpp b/test/testunusedvar.cpp index c48122c1073..6fa5d80751d 100644 --- a/test/testunusedvar.cpp +++ b/test/testunusedvar.cpp @@ -6599,7 +6599,7 @@ class TestUnusedVar : public TestFixture { ASSERT_EQUALS("[test.cpp:2:23]: (style) Variable 's' is assigned a value that is never used. [unreadVariable]\n", errout_str()); functionVariableUsage("void f() {\n" // #14201 - " std::pair p; + " std::pair p;\n" "}\n"); ASSERT_EQUALS("", errout_str()); } From af56e7fa4f7013ff75e97b9b43f657d0e7f43083 Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Wed, 18 Feb 2026 12:39:36 +0100 Subject: [PATCH 4/7] Update std.cfg --- cfg/std.cfg | 1 - 1 file changed, 1 deletion(-) diff --git a/cfg/std.cfg b/cfg/std.cfg index 6cd0c371a5e..8afd026c88c 100644 --- a/cfg/std.cfg +++ b/cfg/std.cfg @@ -9050,7 +9050,6 @@ initializer list (7) string& replace (const_iterator i1, const_iterator i2, init std::scoped_lock std::unique_lock std::shared_lock - std::pair std::complex std::exception std::logic_error From c8bf018d203f7d76e9c376a1789be767473fcfe6 Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Wed, 18 Feb 2026 12:41:20 +0100 Subject: [PATCH 5/7] Update checkunusedvar.cpp --- lib/checkunusedvar.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/checkunusedvar.cpp b/lib/checkunusedvar.cpp index 25e501d5276..df0b57e0113 100644 --- a/lib/checkunusedvar.cpp +++ b/lib/checkunusedvar.cpp @@ -724,9 +724,9 @@ void CheckUnusedVar::checkFunctionVariableUsage_iterateScopes(const Scope* const type = Variables::pointer; else if (mTokenizer->isC() || i->typeEndToken()->isStandardType() || + (i->valueType() && i->valueType()->container) && mTokenizer->getSymbolDatabase()->isRecordTypeWithoutSideEffects(i->type()) || - mSettings->library.detectContainer(i->typeStartToken()) || - mSettings->library.getTypeCheck("unusedvar", i->typeStartToken()->str()) == Library::TypeCheck::check) + mSettings->library.getTypeCheck("unusedvar", i->getTypeName()) == Library::TypeCheck::check) type = Variables::standard; if (type == Variables::none || isPartOfClassStructUnion(i->typeStartToken())) From 8babd82bb67b1fa07ac02a3c2ecd0628d248158b Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Wed, 18 Feb 2026 12:51:57 +0100 Subject: [PATCH 6/7] Update checkunusedvar.cpp --- lib/checkunusedvar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/checkunusedvar.cpp b/lib/checkunusedvar.cpp index df0b57e0113..24fcf38e384 100644 --- a/lib/checkunusedvar.cpp +++ b/lib/checkunusedvar.cpp @@ -724,7 +724,7 @@ void CheckUnusedVar::checkFunctionVariableUsage_iterateScopes(const Scope* const type = Variables::pointer; else if (mTokenizer->isC() || i->typeEndToken()->isStandardType() || - (i->valueType() && i->valueType()->container) && + (i->valueType() && i->valueType()->container) || mTokenizer->getSymbolDatabase()->isRecordTypeWithoutSideEffects(i->type()) || mSettings->library.getTypeCheck("unusedvar", i->getTypeName()) == Library::TypeCheck::check) type = Variables::standard; From 5cad7d6acc64d06f0d2685bf0c93f7f9e7863b83 Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Wed, 18 Feb 2026 13:02:47 +0100 Subject: [PATCH 7/7] Update std.cfg --- cfg/std.cfg | 1 + 1 file changed, 1 insertion(+) diff --git a/cfg/std.cfg b/cfg/std.cfg index 8afd026c88c..b441970adaa 100644 --- a/cfg/std.cfg +++ b/cfg/std.cfg @@ -9050,6 +9050,7 @@ initializer list (7) string& replace (const_iterator i1, const_iterator i2, init std::scoped_lock std::unique_lock std::shared_lock + std::pair std::complex std::exception std::logic_error