aboutsummaryrefslogtreecommitdiffstats
path: root/CompilerStack.cpp
diff options
context:
space:
mode:
authorLefteris Karapetsas <lefteris@refu.co>2015-03-27 22:15:34 +0800
committerLefteris Karapetsas <lefteris@refu.co>2015-03-27 22:15:34 +0800
commit85bb056993ccb111b7e32e28475b906f75b77aa6 (patch)
treee401f72dd8d2ee621b2908bc24f1428687e6c16e /CompilerStack.cpp
parenta7e78fadf5d8fd4d1d4300a4d8064d9bf51af687 (diff)
downloaddexon-solidity-85bb056993ccb111b7e32e28475b906f75b77aa6.tar
dexon-solidity-85bb056993ccb111b7e32e28475b906f75b77aa6.tar.gz
dexon-solidity-85bb056993ccb111b7e32e28475b906f75b77aa6.tar.bz2
dexon-solidity-85bb056993ccb111b7e32e28475b906f75b77aa6.tar.lz
dexon-solidity-85bb056993ccb111b7e32e28475b906f75b77aa6.tar.xz
dexon-solidity-85bb056993ccb111b7e32e28475b906f75b77aa6.tar.zst
dexon-solidity-85bb056993ccb111b7e32e28475b906f75b77aa6.zip
Abstract contract and inheritance
- Checking the linearized base contracts for abstract functions and handle their existence appropriately - If a contract is abstract it can't be created with new - An abstract contract is not compiled (no backend code is generated) - Of course tests
Diffstat (limited to 'CompilerStack.cpp')
-rw-r--r--CompilerStack.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/CompilerStack.cpp b/CompilerStack.cpp
index 55ec0cb5..1301bfa5 100644
--- a/CompilerStack.cpp
+++ b/CompilerStack.cpp
@@ -138,6 +138,8 @@ void CompilerStack::compile(bool _optimize)
for (ASTPointer<ASTNode> const& node: source->ast->getNodes())
if (ContractDefinition* contract = dynamic_cast<ContractDefinition*>(node.get()))
{
+ if (!contract->isFullyImplemented())
+ continue;
shared_ptr<Compiler> compiler = make_shared<Compiler>(_optimize);
compiler->compileContract(*contract, contractBytecode);
Contract& compiledContract = m_contracts[contract->getName()];