aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLefteris Karapetsas <lefteris@refu.co>2015-01-26 21:41:56 +0800
committerLefteris Karapetsas <lefteris@refu.co>2015-01-29 04:46:16 +0800
commitb95048768dbb64fc7d14eb93bdaad7c85b74e7c8 (patch)
tree160e79a2a688d9daf6a4240f964cf57272ba64ba
parent3f5eb965840b57a3d8922c39d1e9f75266993db6 (diff)
downloaddexon-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.cpp10
-rw-r--r--CompilerContext.cpp6
-rw-r--r--CompilerContext.h2
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);