diff options
author | chriseth <chris@ethereum.org> | 2017-06-14 06:07:13 +0800 |
---|---|---|
committer | chriseth <chris@ethereum.org> | 2017-06-14 06:10:33 +0800 |
commit | 154002cda05a75203b625d23ce507787bd5fa5e4 (patch) | |
tree | ef798c867e3de0d6cde05822be1ee3f35d2d832a /libsolidity/inlineasm/AsmAnalysis.cpp | |
parent | 1bf717fd6513dda5336f95104cebfc0f041f3682 (diff) | |
download | dexon-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.cpp | 8 |
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, |