MCPcopy Create free account
hub / github.com/argotorg/solidity / inlineFunctionCall

Method inlineFunctionCall

libsolidity/formal/BMC.cpp:699–732  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

697}
698
699void BMC::inlineFunctionCall(
700 FunctionDefinition const* _funDef,
701 Expression const& _callStackExpr,
702 std::optional<Expression const*> _boundArgumentCall,
703 std::vector<Expression const*> const& _arguments
704)
705{
706 solAssert(_funDef, "");
707
708 if (visitedFunction(_funDef))
709 {
710 auto const& returnParams = _funDef->returnParameters();
711 for (auto param: returnParams)
712 {
713 m_context.newValue(*param);
714 m_context.setUnknownValue(*param);
715 }
716 }
717 else
718 {
719 initializeFunctionCallParameters(*_funDef, symbolicArguments(_funDef->parameters(), _arguments, _boundArgumentCall));
720
721 // The reason why we need to pushCallStack here instead of visit(FunctionDefinition)
722 // is that there we don't have `_callStackExpr`.
723 pushCallStack({_funDef, &_callStackExpr});
724 pushPathCondition(currentPathConditions());
725 auto oldChecked = std::exchange(m_checked, true);
726 _funDef->accept(*this);
727 m_checked = oldChecked;
728 popPathCondition();
729 }
730
731 createReturnedExpressions(_funDef, _callStackExpr);
732}
733
734void BMC::inlineFunctionCall(FunctionCall const& _funCall)
735{

Callers

nothing calls this directly

Calls 7

newValueMethod · 0.80
setUnknownValueMethod · 0.80
parametersMethod · 0.80
hasBoundFirstArgumentMethod · 0.80
sortedArgumentsMethod · 0.80
acceptMethod · 0.45
expressionMethod · 0.45

Tested by

no test coverage detected