aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/inlineasm/AsmAnalysis.cpp
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2017-06-14 06:07:13 +0800
committerchriseth <chris@ethereum.org>2017-06-14 06:10:33 +0800
commit154002cda05a75203b625d23ce507787bd5fa5e4 (patch)
treeef798c867e3de0d6cde05822be1ee3f35d2d832a /libsolidity/inlineasm/AsmAnalysis.cpp
parent1bf717fd6513dda5336f95104cebfc0f041f3682 (diff)
downloaddexon-solidity-154002cda05a75203b625d23ce507787bd5fa5e4.tar
dexon-solidity-154002cda05a75203b625d23ce507787bd5fa5e4.tar.gz
dexon-solidity-154002cda05a75203b625d23ce507787bd5fa5e4.tar.bz2
dexon-solidity-154002cda05a75203b625d23ce507787bd5fa5e4.tar.lz
dexon-solidity-154002cda05a75203b625d23ce507787bd5fa5e4.tar.xz
dexon-solidity-154002cda05a75203b625d23ce507787bd5fa5e4.tar.zst
dexon-solidity-154002cda05a75203b625d23ce507787bd5fa5e4.zip
Move "active variable" to analysis phase.
Diffstat (limited to 'libsolidity/inlineasm/AsmAnalysis.cpp')
-rw-r--r--libsolidity/inlineasm/AsmAnalysis.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/libsolidity/inlineasm/AsmAnalysis.cpp b/libsolidity/inlineasm/AsmAnalysis.cpp
index 13852880..bb30fce1 100644
--- a/libsolidity/inlineasm/AsmAnalysis.cpp
+++ b/libsolidity/inlineasm/AsmAnalysis.cpp
@@ -91,7 +91,7 @@ bool AsmAnalyzer::operator()(assembly::Identifier const& _identifier)
if (m_currentScope->lookup(_identifier.name, Scope::Visitor(
[&](Scope::Variable const& _var)
{
- if (!_var.active)
+ if (!m_activeVariables.count(&_var))
{
m_errorReporter.declarationError(
_identifier.location,
@@ -185,7 +185,7 @@ bool AsmAnalyzer::operator()(assembly::VariableDeclaration const& _varDecl)
for (auto const& variable: _varDecl.variables)
{
expectValidType(variable.type, variable.location);
- boost::get<Scope::Variable>(m_currentScope->identifiers.at(variable.name)).active = true;
+ m_activeVariables.insert(&boost::get<Scope::Variable>(m_currentScope->identifiers.at(variable.name)));
}
m_info.stackHeightInfo[&_varDecl] = m_stackHeight;
return success;
@@ -199,7 +199,7 @@ bool AsmAnalyzer::operator()(assembly::FunctionDefinition const& _funDef)
for (auto const& var: _funDef.arguments + _funDef.returns)
{
expectValidType(var.type, var.location);
- boost::get<Scope::Variable>(varScope.identifiers.at(var.name)).active = true;
+ m_activeVariables.insert(&boost::get<Scope::Variable>(varScope.identifiers.at(var.name)));
}
int const stackHeight = m_stackHeight;
@@ -382,7 +382,7 @@ bool AsmAnalyzer::checkAssignment(assembly::Identifier const& _variable, size_t
m_errorReporter.typeError(_variable.location, "Assignment requires variable.");
success = false;
}
- else if (!boost::get<Scope::Variable>(*var).active)
+ else if (!m_activeVariables.count(&boost::get<Scope::Variable>(*var)))
{
m_errorReporter.declarationError(
_variable.location,