File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -1479,20 +1479,6 @@ void CheckUnusedVar::checkStructMemberUsage()
14791479 bailout = true ;
14801480 break ;
14811481 }
1482- if (var && (var->typeStartToken ()->str () == scope.className || var->typeEndToken ()->str () == scope.className )) {
1483- const std::string addressPattern (" !!" + scope.className + " & " + var->name ()); // cast from struct
1484- const Token* addrTok = scope.bodyEnd ;
1485- do {
1486- addrTok = Token::findmatch (addrTok, addressPattern.c_str ());
1487- if ((addrTok && addrTok->str () == " )" && addrTok->link ()->isCast ()) || isCPPCast (addrTok)) {
1488- bailout = true ;
1489- break ;
1490- }
1491- if (addrTok)
1492- addrTok = addrTok->next ();
1493- } while (addrTok);
1494- }
1495-
14961482 if (bailout)
14971483 break ;
14981484 }
Original file line number Diff line number Diff line change @@ -1677,15 +1677,22 @@ class TestUnusedVar : public TestFixture {
16771677 " uint8_t* p = (uint8_t*)&s;\n "
16781678 " return p[10];\n "
16791679 " };\n " );
1680- ASSERT_EQUALS (" " , errout.str ());
1680+ ASSERT_EQUALS (" [test.cpp:1]: (style) struct member 'S::padding' is never used. \n " , errout.str ());
16811681
16821682 checkStructMemberUsage (" struct S { uint8_t padding[500]; };\n "
16831683 " uint8_t f(const S& s) {\n "
16841684 " std::cout << &s;\n "
16851685 " auto p = reinterpret_cast<const uint8_t*>(&s);\n "
16861686 " return p[10];\n "
16871687 " };\n " );
1688- ASSERT_EQUALS (" " , errout.str ());
1688+ ASSERT_EQUALS (" [test.cpp:1]: (style) struct member 'S::padding' is never used.\n " , errout.str ());
1689+
1690+ checkStructMemberUsage (" struct S { int i, j; };\n " // #11577
1691+ " void f(S s) {\n "
1692+ " void* p = (void*)&s;\n "
1693+ " if (s.i) {}\n "
1694+ " }\n " );
1695+ ASSERT_EQUALS (" [test.cpp:1]: (style) struct member 'S::j' is never used.\n " , errout.str ());
16891696 }
16901697
16911698 void structmember19 () {
You can’t perform that action at this time.
0 commit comments