MCPcopy Create free account
hub / github.com/cppcheck-opensource/cppcheck / getFirstVirtualFunctionCallStack

Method getFirstVirtualFunctionCallStack

lib/checkclass.cpp:3034–3052  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3032}
3033
3034void CheckClassImpl::getFirstVirtualFunctionCallStack(
3035 std::map<const Function *, std::list<const Token *>> & virtualFunctionCallsMap,
3036 const Token * callToken,
3037 std::list<const Token *> & pureFuncStack)
3038{
3039 const Function *callFunction = callToken->function();
3040 if (callFunction->isImplicitlyVirtual() && (!callFunction->isPure() || !callFunction->hasBody())) {
3041 pureFuncStack.push_back(callFunction->tokenDef);
3042 return;
3043 }
3044 auto found = utils::as_const(virtualFunctionCallsMap).find(callFunction);
3045 if (found == virtualFunctionCallsMap.cend() || found->second.empty()) {
3046 pureFuncStack.clear();
3047 return;
3048 }
3049 const Token * firstCall = *found->second.cbegin();
3050 pureFuncStack.push_back(firstCall);
3051 getFirstVirtualFunctionCallStack(virtualFunctionCallsMap, firstCall, pureFuncStack);
3052}
3053
3054void CheckClassImpl::virtualFunctionCallInConstructorError(
3055 const Function * scopeFunction,

Callers

nothing calls this directly

Calls 7

isPureMethod · 0.80
functionMethod · 0.45
isImplicitlyVirtualMethod · 0.45
push_backMethod · 0.45
findMethod · 0.45
emptyMethod · 0.45
clearMethod · 0.45

Tested by

no test coverage detected