aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/analysis
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2018-02-15 22:18:09 +0800
committerchriseth <chris@ethereum.org>2018-03-07 00:45:34 +0800
commitfd1662d1c49776232b491f1871391ad1cd90309a (patch)
treeb872f410a7d59c2f15e227c13422c9ab9405ad54 /libsolidity/analysis
parent14b12ae7452388516d0c4eb833b0c83fe5156b44 (diff)
downloaddexon-solidity-fd1662d1c49776232b491f1871391ad1cd90309a.tar.gz
dexon-solidity-fd1662d1c49776232b491f1871391ad1cd90309a.tar.zst
dexon-solidity-fd1662d1c49776232b491f1871391ad1cd90309a.zip
Warn about using loose inline assembly features as experimental 0.5.0 feature.
Diffstat (limited to 'libsolidity/analysis')
-rw-r--r--libsolidity/analysis/ReferencesResolver.cpp3
-rw-r--r--libsolidity/analysis/TypeChecker.cpp5
2 files changed, 7 insertions, 1 deletions
diff --git a/libsolidity/analysis/ReferencesResolver.cpp b/libsolidity/analysis/ReferencesResolver.cpp
index 296a39c2..f91eaf6e 100644
--- a/libsolidity/analysis/ReferencesResolver.cpp
+++ b/libsolidity/analysis/ReferencesResolver.cpp
@@ -280,7 +280,8 @@ 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, EVMVersion(), assembly::AsmFlavour::Loose, resolver).analyze(_inlineAssembly.operations());
+ boost::optional<Error::Type> errorTypeForLoose = m_experimental050Mode ? Error::Type::SyntaxError : Error::Type::Warning;
+ assembly::AsmAnalyzer(analysisInfo, errorsIgnored, EVMVersion(), errorTypeForLoose, assembly::AsmFlavour::Loose, resolver).analyze(_inlineAssembly.operations());
return false;
}
diff --git a/libsolidity/analysis/TypeChecker.cpp b/libsolidity/analysis/TypeChecker.cpp
index 1748b518..5d28e776 100644
--- a/libsolidity/analysis/TypeChecker.cpp
+++ b/libsolidity/analysis/TypeChecker.cpp
@@ -894,10 +894,15 @@ bool TypeChecker::visit(InlineAssembly const& _inlineAssembly)
};
solAssert(!_inlineAssembly.annotation().analysisInfo, "");
_inlineAssembly.annotation().analysisInfo = make_shared<assembly::AsmAnalysisInfo>();
+ boost::optional<Error::Type> errorTypeForLoose =
+ m_scope->sourceUnit().annotation().experimentalFeatures.count(ExperimentalFeature::V050) ?
+ Error::Type::SyntaxError :
+ Error::Type::Warning;
assembly::AsmAnalyzer analyzer(
*_inlineAssembly.annotation().analysisInfo,
m_errorReporter,
m_evmVersion,
+ errorTypeForLoose,
assembly::AsmFlavour::Loose,
identifierAccess
);