diff options
author | Gav Wood <g@ethdev.com> | 2015-01-21 02:02:18 +0800 |
---|---|---|
committer | Gav Wood <g@ethdev.com> | 2015-01-21 02:02:18 +0800 |
commit | 30b455e4d6a648af74106c25e0f1cf13fdd3dcee (patch) | |
tree | 4b7ce62d54de33a92b3064a9256f6ab6659b64b7 /AST.cpp | |
parent | e0d1f79e0689f0236f8d337f0e34951e691833eb (diff) | |
parent | 96db6cf905d0585530a63a7a64af3d95d088f8b8 (diff) | |
download | dexon-solidity-30b455e4d6a648af74106c25e0f1cf13fdd3dcee.tar dexon-solidity-30b455e4d6a648af74106c25e0f1cf13fdd3dcee.tar.gz dexon-solidity-30b455e4d6a648af74106c25e0f1cf13fdd3dcee.tar.bz2 dexon-solidity-30b455e4d6a648af74106c25e0f1cf13fdd3dcee.tar.lz dexon-solidity-30b455e4d6a648af74106c25e0f1cf13fdd3dcee.tar.xz dexon-solidity-30b455e4d6a648af74106c25e0f1cf13fdd3dcee.tar.zst dexon-solidity-30b455e4d6a648af74106c25e0f1cf13fdd3dcee.zip |
Merge pull request #830 from chriseth/sol_overridesInConstructorContext
Include virtual function overrides in constructor context.
Diffstat (limited to 'AST.cpp')
-rw-r--r-- | AST.cpp | 7 |
1 files changed, 3 insertions, 4 deletions
@@ -82,7 +82,7 @@ map<FixedHash<4>, FunctionDefinition const*> ContractDefinition::getInterfaceFun FunctionDefinition const* ContractDefinition::getConstructor() const { for (ASTPointer<FunctionDefinition> const& f: m_definedFunctions) - if (f->getName() == getName()) + if (f->isConstructor()) return f.get(); return nullptr; } @@ -95,7 +95,7 @@ void ContractDefinition::checkIllegalOverrides() const for (ContractDefinition const* contract: getLinearizedBaseContracts()) for (ASTPointer<FunctionDefinition> const& function: contract->getDefinedFunctions()) { - if (function->getName() == contract->getName()) + if (function->isConstructor()) continue; // constructors can neither be overriden nor override anything FunctionDefinition const*& override = functions[function->getName()]; if (!override) @@ -115,8 +115,7 @@ vector<pair<FixedHash<4>, FunctionDefinition const*>> const& ContractDefinition: m_interfaceFunctionList.reset(new vector<pair<FixedHash<4>, FunctionDefinition const*>>()); for (ContractDefinition const* contract: getLinearizedBaseContracts()) for (ASTPointer<FunctionDefinition> const& f: contract->getDefinedFunctions()) - if (f->isPublic() && f->getName() != contract->getName() && - functionsSeen.count(f->getName()) == 0) + if (f->isPublic() && !f->isConstructor() && functionsSeen.count(f->getName()) == 0) { functionsSeen.insert(f->getName()); FixedHash<4> hash(dev::sha3(f->getCanonicalSignature())); |