File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -1641,7 +1641,8 @@ void CheckUnusedVar::checkStructMemberUsage()
16411641
16421642 for (const Variable &var : scope.varlist ) {
16431643 // only warn for variables without side effects
1644- if (!(var.valueType () && var.valueType ()->type >= ValueType::VOID) && !var.isPointer () && !astIsContainer (var.nameToken ()) && !mTokenizer ->getSymbolDatabase ()->isRecordTypeWithoutSideEffects (var.type ()))
1644+ if (!(var.valueType () && var.valueType ()->type >= ValueType::VOID) && !var.isPointer () && !astIsContainer (var.nameToken ()) &&
1645+ !astIsSmartPointer (var.nameToken ()) && !mTokenizer ->getSymbolDatabase ()->isRecordTypeWithoutSideEffects (var.type ()))
16451646 continue ;
16461647 if (isInherited && !var.isPrivate ())
16471648 continue ;
Original file line number Diff line number Diff line change @@ -2094,6 +2094,11 @@ class TestUnusedVar : public TestFixture {
20942094 " std::int32_t i;\n "
20952095 " };\n " );
20962096 ASSERT_EQUALS (" [test.cpp:2:16]: (style) struct member 'S::i' is never used. [unusedStructMember]\n " , errout_str ());
2097+
2098+ checkStructMemberUsage (" struct S {\n " // #14786
2099+ " std::unique_ptr<int> p;\n "
2100+ " };\n " );
2101+ ASSERT_EQUALS (" [test.cpp:2:24]: (style) struct member 'S::p' is never used. [unusedStructMember]\n " , errout_str ());
20972102 }
20982103
20992104 void structmember_macro () {
You can’t perform that action at this time.
0 commit comments