aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/formal/Z3Interface.cpp
diff options
context:
space:
mode:
authorAlex Beregszaszi <alex@rtfs.hu>2017-11-22 11:20:09 +0800
committerGitHub <noreply@github.com>2017-11-22 11:20:09 +0800
commitf47604c14ba5f2b6c27b35e84d3cf57710040b7e (patch)
treee4a05c73c3dc1b4487b60a2db4bb070186ab0b09 /libsolidity/formal/Z3Interface.cpp
parent4e0723ce27b343b9dd7c423542b9261d7c48927b (diff)
parent8538a25f8d97f8416d20ace7dcd1bd760a425db9 (diff)
downloaddexon-solidity-f47604c14ba5f2b6c27b35e84d3cf57710040b7e.tar
dexon-solidity-f47604c14ba5f2b6c27b35e84d3cf57710040b7e.tar.gz
dexon-solidity-f47604c14ba5f2b6c27b35e84d3cf57710040b7e.tar.bz2
dexon-solidity-f47604c14ba5f2b6c27b35e84d3cf57710040b7e.tar.lz
dexon-solidity-f47604c14ba5f2b6c27b35e84d3cf57710040b7e.tar.xz
dexon-solidity-f47604c14ba5f2b6c27b35e84d3cf57710040b7e.tar.zst
dexon-solidity-f47604c14ba5f2b6c27b35e84d3cf57710040b7e.zip
Merge pull request #2993 from ethereum/trackVariables
SMT checker for various things
Diffstat (limited to 'libsolidity/formal/Z3Interface.cpp')
-rw-r--r--libsolidity/formal/Z3Interface.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/libsolidity/formal/Z3Interface.cpp b/libsolidity/formal/Z3Interface.cpp
index 6111b2c8..e5c1aef4 100644
--- a/libsolidity/formal/Z3Interface.cpp
+++ b/libsolidity/formal/Z3Interface.cpp
@@ -91,7 +91,7 @@ pair<CheckResult, vector<string>> Z3Interface::check(vector<Expression> const& _
solAssert(false, "");
}
- if (result != CheckResult::UNSATISFIABLE)
+ if (result != CheckResult::UNSATISFIABLE && !_expressionsToEvaluate.empty())
{
z3::model m = m_solver.get_model();
for (Expression const& e: _expressionsToEvaluate)
@@ -139,8 +139,13 @@ z3::expr Z3Interface::toZ3Expr(Expression const& _expr)
}
else if (arguments.empty())
{
- // We assume it is an integer...
- return m_context.int_val(n.c_str());
+ if (n == "true")
+ return m_context.bool_val(true);
+ else if (n == "false")
+ return m_context.bool_val(false);
+ else
+ // We assume it is an integer...
+ return m_context.int_val(n.c_str());
}
solAssert(arity.count(n) && arity.at(n) == arguments.size(), "");