| 3204 | } |
| 3205 | |
| 3206 | void CheckClassImpl::checkDuplInheritedMembersRecursive(const Type* typeCurrent, const Type* typeBase) |
| 3207 | { |
| 3208 | const auto resultsVar = getDuplInheritedMembersRecursive(typeCurrent, typeBase); |
| 3209 | for (const auto& r : resultsVar) { |
| 3210 | duplInheritedMembersError(r.classVar->nameToken(), r.parentClassVar->nameToken(), |
| 3211 | typeCurrent->name(), r.parentClass->type->name(), r.classVar->name(), |
| 3212 | typeCurrent->classScope->type == ScopeType::eStruct, |
| 3213 | r.parentClass->type->classScope->type == ScopeType::eStruct); |
| 3214 | } |
| 3215 | |
| 3216 | const auto resultsFunc = getDuplInheritedMemberFunctionsRecursive(typeCurrent, typeBase); |
| 3217 | for (const auto& r : resultsFunc) { |
| 3218 | duplInheritedMembersError(r.classFunc->token, r.parentClassFunc->token, |
| 3219 | typeCurrent->name(), r.parentClass->type->name(), r.classFunc->name(), |
| 3220 | typeCurrent->classScope->type == ScopeType::eStruct, |
| 3221 | r.parentClass->type->classScope->type == ScopeType::eStruct, /*isFunction*/ true); |
| 3222 | } |
| 3223 | } |
| 3224 | |
| 3225 | void CheckClassImpl::duplInheritedMembersError(const Token *tok1, const Token* tok2, |
| 3226 | const std::string &derivedName, const std::string &baseName, |
nothing calls this directly
no test coverage detected