aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/analysis
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2018-03-05 19:10:49 +0800
committerGitHub <noreply@github.com>2018-03-05 19:10:49 +0800
commit6dc137317fa8249a9c1b19ff6430840974393f90 (patch)
tree2263fd97b42da5673b1dcce24ab4419ce8dc67b9 /libsolidity/analysis
parente3c2ab39a125e68aea07ba9c8cacb0a55293bf0d (diff)
parent6ec4517929e8c0eca022f4771ba217db5d80beed (diff)
downloaddexon-solidity-6dc137317fa8249a9c1b19ff6430840974393f90.tar
dexon-solidity-6dc137317fa8249a9c1b19ff6430840974393f90.tar.gz
dexon-solidity-6dc137317fa8249a9c1b19ff6430840974393f90.tar.bz2
dexon-solidity-6dc137317fa8249a9c1b19ff6430840974393f90.tar.lz
dexon-solidity-6dc137317fa8249a9c1b19ff6430840974393f90.tar.xz
dexon-solidity-6dc137317fa8249a9c1b19ff6430840974393f90.tar.zst
dexon-solidity-6dc137317fa8249a9c1b19ff6430840974393f90.zip
Merge pull request #3569 from ethereum/evmVersion
EVM version
Diffstat (limited to 'libsolidity/analysis')
-rw-r--r--libsolidity/analysis/ReferencesResolver.cpp3
-rw-r--r--libsolidity/analysis/TypeChecker.cpp1
-rw-r--r--libsolidity/analysis/TypeChecker.h9
3 files changed, 11 insertions, 2 deletions
diff --git a/libsolidity/analysis/ReferencesResolver.cpp b/libsolidity/analysis/ReferencesResolver.cpp
index 985c44d0..296a39c2 100644
--- a/libsolidity/analysis/ReferencesResolver.cpp
+++ b/libsolidity/analysis/ReferencesResolver.cpp
@@ -278,8 +278,9 @@ bool ReferencesResolver::visit(InlineAssembly const& _inlineAssembly)
};
// Will be re-generated later with correct information
+ // We use the latest EVM version because we will re-run it anyway.
assembly::AsmAnalysisInfo analysisInfo;
- assembly::AsmAnalyzer(analysisInfo, errorsIgnored, assembly::AsmFlavour::Loose, resolver).analyze(_inlineAssembly.operations());
+ assembly::AsmAnalyzer(analysisInfo, errorsIgnored, EVMVersion(), assembly::AsmFlavour::Loose, resolver).analyze(_inlineAssembly.operations());
return false;
}
diff --git a/libsolidity/analysis/TypeChecker.cpp b/libsolidity/analysis/TypeChecker.cpp
index cc7492dd..9846a0d0 100644
--- a/libsolidity/analysis/TypeChecker.cpp
+++ b/libsolidity/analysis/TypeChecker.cpp
@@ -875,6 +875,7 @@ bool TypeChecker::visit(InlineAssembly const& _inlineAssembly)
assembly::AsmAnalyzer analyzer(
*_inlineAssembly.annotation().analysisInfo,
m_errorReporter,
+ m_evmVersion,
assembly::AsmFlavour::Loose,
identifierAccess
);
diff --git a/libsolidity/analysis/TypeChecker.h b/libsolidity/analysis/TypeChecker.h
index 16796b63..2ba31232 100644
--- a/libsolidity/analysis/TypeChecker.h
+++ b/libsolidity/analysis/TypeChecker.h
@@ -22,6 +22,8 @@
#pragma once
+#include <libsolidity/interface/EVMVersion.h>
+
#include <libsolidity/ast/Types.h>
#include <libsolidity/ast/ASTAnnotations.h>
#include <libsolidity/ast/ASTForward.h>
@@ -43,7 +45,10 @@ class TypeChecker: private ASTConstVisitor
{
public:
/// @param _errorReporter provides the error logging functionality.
- TypeChecker(ErrorReporter& _errorReporter): m_errorReporter(_errorReporter) {}
+ TypeChecker(EVMVersion _evmVersion, ErrorReporter& _errorReporter):
+ m_evmVersion(_evmVersion),
+ m_errorReporter(_errorReporter)
+ {}
/// Performs type checking on the given contract and all of its sub-nodes.
/// @returns true iff all checks passed. Note even if all checks passed, errors() can still contain warnings
@@ -132,6 +137,8 @@ private:
ContractDefinition const* m_scope = nullptr;
+ EVMVersion m_evmVersion;
+
/// Flag indicating whether we are currently inside an EmitStatement.
bool m_insideEmitStatement = false;