@@ -2880,17 +2880,17 @@ static std::string getScopeName(const std::list<ScopeInfo2> &scopeInfo)
28802880 return ret;
28812881}
28822882
2883- static Token * matchFunctionName (const Member &func , const std::list<ScopeInfo2> &scopeInfo)
2883+ static Token * matchMemberName (const Member &member , const std::list<ScopeInfo2> &scopeInfo)
28842884{
28852885 if (scopeInfo.empty ())
28862886 return nullptr ;
2887- std::list<std::string>::const_iterator funcScopeIt = func .scope .begin ();
2888- Token *tok2 = func .tok ;
2887+ std::list<std::string>::const_iterator memberScopeIt = member .scope .begin ();
2888+ Token *tok2 = member .tok ;
28892889 for (std::list<ScopeInfo2>::const_iterator it = scopeInfo.begin (); tok2 && it != scopeInfo.end (); ++it) {
2890- if (funcScopeIt != func .scope .end ()) {
2891- if (it->name != *funcScopeIt )
2890+ if (memberScopeIt != member .scope .end ()) {
2891+ if (it->name != *memberScopeIt )
28922892 return nullptr ;
2893- ++funcScopeIt ;
2893+ ++memberScopeIt ;
28942894 continue ;
28952895 }
28962896
@@ -2905,7 +2905,19 @@ static Token * matchFunctionName(const Member &func, const std::list<ScopeInfo2>
29052905 }
29062906 tok2 = tok2->tokAt (2 );
29072907 }
2908- return (funcScopeIt == func.scope .end () && Token::Match (tok2, " ~| %name% (" )) ? tok2 : nullptr ;
2908+ return (memberScopeIt == member.scope .end () && Token::Match (tok2, " ~| %name%" )) ? tok2 : nullptr ;
2909+ }
2910+
2911+ static Token * matchMemberVarName (const Member &var, const std::list<ScopeInfo2> &scopeInfo)
2912+ {
2913+ Token *tok = matchMemberName (var, scopeInfo);
2914+ return Token::Match (tok, " %name% !!(" ) ? tok : nullptr ;
2915+ }
2916+
2917+ static Token * matchMemberFunctionName (const Member &func, const std::list<ScopeInfo2> &scopeInfo)
2918+ {
2919+ Token *tok = matchMemberName (func, scopeInfo);
2920+ return Token::Match (tok, " ~| %name% (" ) ? tok : nullptr ;
29092921}
29102922
29112923void Tokenizer::setVarIdPass2 ()
@@ -3024,12 +3036,10 @@ void Tokenizer::setVarIdPass2()
30243036 continue ;
30253037
30263038 // Member variables
3027- for (std::list<Member>::iterator func = allMemberVars.begin (); func != allMemberVars.end (); ++func) {
3028- if (!Token::simpleMatch (func->tok , classname.c_str ()))
3039+ for (std::list<Member>::iterator var = allMemberVars.begin (); var != allMemberVars.end (); ++var) {
3040+ Token *tok2 = matchMemberVarName (*var, scopeInfo);
3041+ if (!tok2)
30293042 continue ;
3030-
3031- Token *tok2 = func->tok ;
3032- tok2 = tok2->tokAt (2 );
30333043 tok2->varId (thisClassVars[tok2->str ()]);
30343044 }
30353045
@@ -3038,7 +3048,7 @@ void Tokenizer::setVarIdPass2()
30383048
30393049 // Set variable ids in member functions for this class..
30403050 for (std::list<Member>::const_iterator func = allMemberFunctions.begin (); func != allMemberFunctions.end (); ++func) {
3041- Token *tok2 = matchFunctionName (*func, scopeInfo);
3051+ Token *tok2 = matchMemberFunctionName (*func, scopeInfo);
30423052 if (!tok2)
30433053 continue ;
30443054
0 commit comments