diff options
author | Lefteris Karapetsas <lefteris@refu.co> | 2015-03-27 22:15:34 +0800 |
---|---|---|
committer | Lefteris Karapetsas <lefteris@refu.co> | 2015-03-27 22:15:34 +0800 |
commit | 85bb056993ccb111b7e32e28475b906f75b77aa6 (patch) | |
tree | e401f72dd8d2ee621b2908bc24f1428687e6c16e /CompilerStack.cpp | |
parent | a7e78fadf5d8fd4d1d4300a4d8064d9bf51af687 (diff) | |
download | dexon-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.cpp | 2 |
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()]; |