@@ -80,6 +80,7 @@ class TestUnusedVar : public TestFixture {
8080 TEST_CASE (structmember32); // #14483
8181 TEST_CASE (structmember33);
8282 TEST_CASE (structmember34);
83+ TEST_CASE (structmember35);
8384 TEST_CASE (structmember_macro);
8485 TEST_CASE (structmember_template_argument); // #13887 - do not report that member used in template argument is unused
8586 TEST_CASE (classmember);
@@ -2102,6 +2103,20 @@ class TestUnusedVar : public TestFixture {
21022103 ASSERT_EQUALS (" [test.cpp:2:24]: (style) struct member 'S::p' is never used. [unusedStructMember]\n " , errout_str ());
21032104 }
21042105
2106+ void structmember35 () {
2107+ checkStructMemberUsage (" struct S { int i; };\n "
2108+ " int f() { return g<S>(); }\n " );
2109+ ASSERT_EQUALS (" " , errout_str ());
2110+
2111+ checkStructMemberUsage (" struct S { int i; };\n "
2112+ " int f() { A<S> *a = nullptr; (void) a; }\n " );
2113+ ASSERT_EQUALS (" " , errout_str ());
2114+
2115+ checkStructMemberUsage (" struct S { int i; };\n "
2116+ " int f() { const std::vector<S> a {}; (void) a; }\n " );
2117+ ASSERT_EQUALS (" [test.cpp:1:16]: (style) struct member 'S::i' is never used. [unusedStructMember]\n " , errout_str ());
2118+ }
2119+
21052120 void structmember_macro () {
21062121 checkStructMemberUsageP (" #define S(n) struct n { int a, b, c; };\n "
21072122 " S(unused);\n " );
0 commit comments