[SMTChecker] Declaring all state vars before any function is visited

This commit is contained in:
Leonardo Alt
2018-05-15 14:28:08 +02:00
committed by chriseth
parent 2dbb35d4a8
commit 4117e859eb
4 changed files with 27 additions and 3 deletions
+13 -2
View File
@@ -58,12 +58,23 @@ void SMTChecker::analyze(SourceUnit const& _source)
_source.accept(*this);
}
bool SMTChecker::visit(ContractDefinition const& _contract)
{
for (auto _var : _contract.stateVariables())
if (_var->type()->isValueType())
createVariable(*_var);
return true;
}
void SMTChecker::endVisit(ContractDefinition const&)
{
m_stateVariables.clear();
}
void SMTChecker::endVisit(VariableDeclaration const& _varDecl)
{
if (_varDecl.isLocalVariable() && _varDecl.type()->isValueType() &&_varDecl.value())
assignment(_varDecl, *_varDecl.value(), _varDecl.location());
else if (_varDecl.isStateVariable() && _varDecl.type()->isValueType())
createVariable(_varDecl);
}
bool SMTChecker::visit(FunctionDefinition const& _function)