@@ -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);
@@ -2101,6 +2102,20 @@ class TestUnusedVar : public TestFixture {
21012102 ASSERT_EQUALS (" [test.cpp:2:24]: (style) struct member 'S::p' is never used. [unusedStructMember]\n " , errout_str ());
21022103 }
21032104
2105+ void structmember35 () {
2106+ checkStructMemberUsage (" struct S { int i; };\n "
2107+ " int f() { return g<S>(); }\n " );
2108+ ASSERT_EQUALS (" " , errout_str ());
2109+
2110+ checkStructMemberUsage (" struct S { int i; };\n "
2111+ " int f() { A<S> *a = nullptr; (void) a; }\n " );
2112+ ASSERT_EQUALS (" " , errout_str ());
2113+
2114+ checkStructMemberUsage (" struct S { int i; };\n "
2115+ " int f() { const std::vector<S> a {}; (void) a; }\n " );
2116+ ASSERT_EQUALS (" [test.cpp:1:16]: (style) struct member 'S::i' is never used. [unusedStructMember]\n " , errout_str ());
2117+ }
2118+
21042119 void structmember_macro () {
21052120 checkStructMemberUsageP (" #define S(n) struct n { int a, b, c; };\n "
21062121 " S(unused);\n " );
0 commit comments