aboutsummaryrefslogtreecommitdiffstats
path: root/CompilerStack.cpp
diff options
context:
space:
mode:
authorchriseth <c@ethdev.com>2015-04-17 23:31:47 +0800
committerchriseth <c@ethdev.com>2015-04-17 23:31:47 +0800
commitc9812f7269704fcfa708d9b352b8344a5754a223 (patch)
treeacae6a747018dcab896c7129d4467ad43c067232 /CompilerStack.cpp
parent5622364a98102574f04019e2f1041d54d2d04984 (diff)
parentc558aa06567f4e6e28b8f15c3dee73867fde447b (diff)
downloaddexon-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.cpp16
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