diff options
author | Lefteris Karapetsas <lefteris@refu.co> | 2015-01-26 21:41:56 +0800 |
---|---|---|
committer | Lefteris Karapetsas <lefteris@refu.co> | 2015-01-29 04:46:16 +0800 |
commit | b95048768dbb64fc7d14eb93bdaad7c85b74e7c8 (patch) | |
tree | 160e79a2a688d9daf6a4240f964cf57272ba64ba | |
parent | 3f5eb965840b57a3d8922c39d1e9f75266993db6 (diff) | |
download | dexon-solidity-b95048768dbb64fc7d14eb93bdaad7c85b74e7c8.tar dexon-solidity-b95048768dbb64fc7d14eb93bdaad7c85b74e7c8.tar.gz dexon-solidity-b95048768dbb64fc7d14eb93bdaad7c85b74e7c8.tar.bz2 dexon-solidity-b95048768dbb64fc7d14eb93bdaad7c85b74e7c8.tar.lz dexon-solidity-b95048768dbb64fc7d14eb93bdaad7c85b74e7c8.tar.xz dexon-solidity-b95048768dbb64fc7d14eb93bdaad7c85b74e7c8.tar.zst dexon-solidity-b95048768dbb64fc7d14eb93bdaad7c85b74e7c8.zip |
Solidity EntryLabel now uses a generic declaration
- Instead of a FunctionDefinition
-rw-r--r-- | Compiler.cpp | 10 | ||||
-rw-r--r-- | CompilerContext.cpp | 6 | ||||
-rw-r--r-- | CompilerContext.h | 2 |
3 files changed, 11 insertions, 7 deletions
diff --git a/Compiler.cpp b/Compiler.cpp index f6f48a8c..28a9b3d1 100644 --- a/Compiler.cpp +++ b/Compiler.cpp @@ -43,9 +43,13 @@ void Compiler::compileContract(ContractDefinition const& _contract, for (ContractDefinition const* contract: _contract.getLinearizedBaseContracts()) { - for (ASTPointer<FunctionDefinition> const& function: contract->getDefinedFunctions()) - if (!function->isConstructor()) - m_context.addFunction(*function); + for (auto const& it: contract->getInterfaceFunctions()) + { + auto funcDef = it.second.getFunctionDefinition(); + if (funcDef && funcDef->isConstructor()) + continue; + m_context.addFunction(*it.second.getDeclaration()); + } for (ASTPointer<ModifierDefinition> const& modifier: contract->getFunctionModifiers()) m_context.addModifier(*modifier); } diff --git a/CompilerContext.cpp b/CompilerContext.cpp index 4edced94..ea349c0d 100644 --- a/CompilerContext.cpp +++ b/CompilerContext.cpp @@ -59,11 +59,11 @@ void CompilerContext::addAndInitializeVariable(VariableDeclaration const& _decla *this << u256(0); } -void CompilerContext::addFunction(FunctionDefinition const& _function) +void CompilerContext::addFunction(Declaration const& _decl) { eth::AssemblyItem tag(m_asm.newTag()); - m_functionEntryLabels.insert(make_pair(&_function, tag)); - m_virtualFunctionEntryLabels.insert(make_pair(_function.getName(), tag)); + m_functionEntryLabels.insert(make_pair(&_decl, tag)); + m_virtualFunctionEntryLabels.insert(make_pair(_decl.getName(), tag)); } void CompilerContext::addModifier(ModifierDefinition const& _modifier) diff --git a/CompilerContext.h b/CompilerContext.h index aa438cf0..42ac9ee8 100644 --- a/CompilerContext.h +++ b/CompilerContext.h @@ -44,7 +44,7 @@ public: void startNewFunction() { m_localVariables.clear(); m_asm.setDeposit(0); } void addVariable(VariableDeclaration const& _declaration, unsigned _offsetToCurrent = 0); void addAndInitializeVariable(VariableDeclaration const& _declaration); - void addFunction(FunctionDefinition const& _function); + void addFunction(Declaration const& _decl); /// Adds the given modifier to the list by name if the name is not present already. void addModifier(ModifierDefinition const& _modifier); |