@@ -1615,41 +1615,6 @@ void CheckUnusedVar::checkStructMemberUsage()
16151615 }
16161616 }
16171617
1618- // #7458 - if this is a union and any member is used, don't warn about other members
1619- bool unionWithUsedMember = false ;
1620- if (scope.type == ScopeType::eUnion) {
1621- // Check if any direct member of the union is used
1622- for (const Variable &unionVar : scope.varlist ) {
1623- for (const Token *tok = mTokenizer ->tokens (); tok; tok = tok->next ()) {
1624- if (tok->variable () == &unionVar && tok != unionVar.nameToken ()) {
1625- unionWithUsedMember = true ;
1626- break ;
1627- }
1628- }
1629- if (unionWithUsedMember)
1630- break ;
1631- }
1632- // Also check if any member of nested structs in this union is used
1633- if (!unionWithUsedMember) {
1634- for (const Scope *nestedScope : scope.nestedList ) {
1635- if (nestedScope->type == ScopeType::eStruct) {
1636- for (const Variable &structVar : nestedScope->varlist ) {
1637- for (const Token *tok = mTokenizer ->tokens (); tok; tok = tok->next ()) {
1638- if (tok->variable () == &structVar && tok != structVar.nameToken ()) {
1639- unionWithUsedMember = true ;
1640- break ;
1641- }
1642- }
1643- if (unionWithUsedMember)
1644- break ;
1645- }
1646- if (unionWithUsedMember)
1647- break ;
1648- }
1649- }
1650- }
1651- }
1652-
16531618 for (const Variable &var : scope.varlist ) {
16541619 // only warn for variables without side effects
16551620 if (!var.typeStartToken ()->isStandardType () && !var.isPointer () && !astIsContainer (var.nameToken ()) && !isRecordTypeWithoutSideEffects (var.type ()))
@@ -1667,9 +1632,6 @@ void CheckUnusedVar::checkStructMemberUsage()
16671632 if (structInUnionWithUsedMember)
16681633 continue ;
16691634
1670- // Skip reporting unused members if this is a union and any member is used
1671- if (unionWithUsedMember)
1672- continue ;
16731635
16741636 // Check if the struct member variable is used anywhere in the file
16751637 bool use = false ;
0 commit comments