aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2017-08-12 00:54:56 +0800
committerchriseth <chris@ethereum.org>2017-08-23 23:37:35 +0800
commitc93f0434cd2dc8542d9adf9dc7d9256fd54d65de (patch)
treedf3bcd767affb7a3ae10a9a5fc190fed05223d36
parent75f09f2a84e556ca48b7bae00b459c77a0fa09fe (diff)
downloaddexon-solidity-c93f0434cd2dc8542d9adf9dc7d9256fd54d65de.tar.gz
dexon-solidity-c93f0434cd2dc8542d9adf9dc7d9256fd54d65de.tar.zst
dexon-solidity-c93f0434cd2dc8542d9adf9dc7d9256fd54d65de.zip
Use experimental feature pragma for SMT checker.
-rw-r--r--libsolidity/ast/ExperimentalFeatures.h3
-rw-r--r--libsolidity/formal/SMTChecker.cpp7
2 files changed, 4 insertions, 6 deletions
diff --git a/libsolidity/ast/ExperimentalFeatures.h b/libsolidity/ast/ExperimentalFeatures.h
index 0c03ea4a..2c089671 100644
--- a/libsolidity/ast/ExperimentalFeatures.h
+++ b/libsolidity/ast/ExperimentalFeatures.h
@@ -29,6 +29,7 @@ namespace solidity
enum class ExperimentalFeature
{
+ SMTChecker,
ABIEncoderV2, // new ABI encoder that makes use of JULIA
Test,
TestOnlyAnalysis
@@ -36,11 +37,13 @@ enum class ExperimentalFeature
static const std::map<ExperimentalFeature, bool> ExperimentalFeatureOnlyAnalysis =
{
+ { ExperimentalFeature::SMTChecker, true },
{ ExperimentalFeature::TestOnlyAnalysis, true },
};
static const std::map<std::string, ExperimentalFeature> ExperimentalFeatureNames =
{
+ { "SMTChecker", ExperimentalFeature::SMTChecker },
{ "ABIEncoderV2", ExperimentalFeature::ABIEncoderV2 },
{ "__test", ExperimentalFeature::Test },
{ "__testOnlyAnalysis", ExperimentalFeature::TestOnlyAnalysis },
diff --git a/libsolidity/formal/SMTChecker.cpp b/libsolidity/formal/SMTChecker.cpp
index e1fd2bfd..092ecdb2 100644
--- a/libsolidity/formal/SMTChecker.cpp
+++ b/libsolidity/formal/SMTChecker.cpp
@@ -44,12 +44,7 @@ SMTChecker::SMTChecker(ErrorReporter& _errorReporter, ReadCallback::Callback con
void SMTChecker::analyze(SourceUnit const& _source)
{
- bool pragmaFound = false;
- for (auto const& node: _source.nodes())
- if (auto const* pragma = dynamic_cast<PragmaDirective const*>(node.get()))
- if (pragma->literals()[0] == "checkAssertions")
- pragmaFound = true;
- if (pragmaFound)
+ if (_source.annotation().experimentalFeatures.count(ExperimentalFeature::SMTChecker))
{
m_interface->reset();
m_currentSequenceCounter.clear();