Extract contractAddressValue into own function

This commit is contained in:
Leo Alt 2021-10-12 11:12:18 +02:00
parent 2aba061bde
commit 08781eb8f5
2 changed files with 13 additions and 0 deletions

View File

@ -2781,6 +2781,17 @@ MemberAccess const* SMTEncoder::isEmptyPush(Expression const& _expr) const
return nullptr;
}
smtutil::Expression SMTEncoder::contractAddressValue(FunctionCall const& _f)
{
FunctionType const& funType = dynamic_cast<FunctionType const&>(*_f.expression().annotation().type);
if (funType.kind() == FunctionType::Kind::Internal)
return state().thisAddress();
auto [funExpr, funOptions] = functionCallExpression(_f);
if (MemberAccess const* callBase = dynamic_cast<MemberAccess const*>(funExpr))
return expr(callBase->expression());
solAssert(false, "Unreachable!");
}
bool SMTEncoder::isPublicGetter(Expression const& _expr) {
if (!isTrustedExternalCall(&_expr))
return false;

View File

@ -229,6 +229,8 @@ protected:
bool isPublicGetter(Expression const& _expr);
smtutil::Expression contractAddressValue(FunctionCall const& _f);
/// Encodes a modifier or function body according to the modifier
/// visit depth.
void visitFunctionOrModifier();