diff options
author | chriseth <c@ethdev.com> | 2015-04-17 23:31:47 +0800 |
---|---|---|
committer | chriseth <c@ethdev.com> | 2015-04-17 23:31:47 +0800 |
commit | c9812f7269704fcfa708d9b352b8344a5754a223 (patch) | |
tree | acae6a747018dcab896c7129d4467ad43c067232 /CompilerStack.cpp | |
parent | 5622364a98102574f04019e2f1041d54d2d04984 (diff) | |
parent | c558aa06567f4e6e28b8f15c3dee73867fde447b (diff) | |
download | dexon-solidity-c9812f7269704fcfa708d9b352b8344a5754a223.tar dexon-solidity-c9812f7269704fcfa708d9b352b8344a5754a223.tar.gz dexon-solidity-c9812f7269704fcfa708d9b352b8344a5754a223.tar.bz2 dexon-solidity-c9812f7269704fcfa708d9b352b8344a5754a223.tar.lz dexon-solidity-c9812f7269704fcfa708d9b352b8344a5754a223.tar.xz dexon-solidity-c9812f7269704fcfa708d9b352b8344a5754a223.tar.zst dexon-solidity-c9812f7269704fcfa708d9b352b8344a5754a223.zip |
Merge pull request #1501 from LefterisJP/abstract_contract_contructors
Abstract contract contructors
Diffstat (limited to 'CompilerStack.cpp')
-rw-r--r-- | CompilerStack.cpp | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/CompilerStack.cpp b/CompilerStack.cpp index 1301bfa5..c35d9324 100644 --- a/CompilerStack.cpp +++ b/CompilerStack.cpp @@ -157,14 +157,16 @@ bytes const& CompilerStack::compile(string const& _sourceCode, bool _optimize) return getBytecode(); } -eth::AssemblyItems const& CompilerStack::getAssemblyItems(string const& _contractName) const +eth::AssemblyItems const* CompilerStack::getAssemblyItems(string const& _contractName) const { - return getContract(_contractName).compiler->getAssemblyItems(); + Contract const& contract = getContract(_contractName); + return contract.compiler ? &getContract(_contractName).compiler->getAssemblyItems() : nullptr; } -eth::AssemblyItems const& CompilerStack::getRuntimeAssemblyItems(string const& _contractName) const +eth::AssemblyItems const* CompilerStack::getRuntimeAssemblyItems(string const& _contractName) const { - return getContract(_contractName).compiler->getRuntimeAssemblyItems(); + Contract const& contract = getContract(_contractName); + return contract.compiler ? &getContract(_contractName).compiler->getRuntimeAssemblyItems() : nullptr; } bytes const& CompilerStack::getBytecode(string const& _contractName) const @@ -184,7 +186,11 @@ dev::h256 CompilerStack::getContractCodeHash(string const& _contractName) const void CompilerStack::streamAssembly(ostream& _outStream, string const& _contractName, StringMap _sourceCodes) const { - getContract(_contractName).compiler->streamAssembly(_outStream, _sourceCodes); + Contract const& contract = getContract(_contractName); + if (contract.compiler) + getContract(_contractName).compiler->streamAssembly(_outStream, _sourceCodes); + else + _outStream << "Contract not fully implemented" << endl; } string const& CompilerStack::getInterface(string const& _contractName) const |