@@ -4223,12 +4223,12 @@ void CheckOtherImpl::funcArgOrderDifferent(const std::string & functionName,
42234223 reportError (tokens, Severity::warning, " funcArgOrderDifferent" , msg, CWE683 , Certainty::normal);
42244224}
42254225
4226- static const Token *findShadowed (const Scope *scope, const Variable& var, int linenr )
4226+ static const Token *findShadowed (const Scope *scope, const Variable& var)
42274227{
42284228 if (!scope)
42294229 return nullptr ;
42304230 for (const Variable &v : scope->varlist ) {
4231- if (scope->isExecutable () && v.nameToken ()-> linenr () > linenr )
4231+ if (( scope->isExecutable () || scope-> type == ScopeType::eGlobal) && succeeds ( v.nameToken (), var. nameToken ()) )
42324232 continue ;
42334233 if (v.name () == var.name ())
42344234 return v.nameToken ();
@@ -4242,9 +4242,9 @@ static const Token *findShadowed(const Scope *scope, const Variable& var, int li
42424242
42434243 if (scope->type == ScopeType::eLambda)
42444244 return nullptr ;
4245- const Token* shadowed = findShadowed (scope->nestedIn , var, linenr );
4245+ const Token* shadowed = findShadowed (scope->nestedIn , var);
42464246 if (!shadowed)
4247- shadowed = findShadowed (scope->functionOf , var, linenr );
4247+ shadowed = findShadowed (scope->functionOf , var);
42484248 return shadowed;
42494249}
42504250
@@ -4278,9 +4278,9 @@ void CheckOtherImpl::checkShadowVariables()
42784278 }
42794279 }
42804280
4281- const Token *shadowed = findShadowed (scope.nestedIn , var, var. nameToken ()-> linenr () );
4281+ const Token *shadowed = findShadowed (scope.nestedIn , var);
42824282 if (!shadowed)
4283- shadowed = findShadowed (scope.functionOf , var, var. nameToken ()-> linenr () );
4283+ shadowed = findShadowed (scope.functionOf , var);
42844284 if (!shadowed)
42854285 return ;
42864286 if (scope.type == ScopeType::eFunction && scope.className == var.name ())
@@ -4314,9 +4314,10 @@ void CheckOtherImpl::checkShadowVariables()
43144314void CheckOtherImpl::shadowError (const Token *shadows, const std::string &shadowsType,
43154315 const Token *shadowed, const std::string &shadowedType)
43164316{
4317- ErrorPath errorPath;
4318- errorPath.emplace_back (shadowed, " Shadowed " + shadowedType);
4319- errorPath.emplace_back (shadows, " Shadow " + shadowsType);
4317+ ErrorPath errorPath{
4318+ {shadowed, " Shadowed " + shadowedType},
4319+ {shadows, " Shadow " + shadowsType}
4320+ };
43204321 const std::string &varname = shadows ? shadows->str () : shadowsType;
43214322 const std::string ShadowsType = char (std::toupper (shadowsType[0 ])) + shadowsType.substr (1 );
43224323 const std::string ShadowedType = char (std::toupper (shadowedType[0 ])) + shadowedType.substr (1 );
0 commit comments