From d854e56789c4bf2f5caca563dd0e660dababf181 Mon Sep 17 00:00:00 2001 From: Christian Date: Tue, 20 Jan 2015 15:58:04 +0100 Subject: Include virtual function overrides in constructor context. --- AST.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'AST.cpp') diff --git a/AST.cpp b/AST.cpp index 2cb738d3..82667367 100644 --- a/AST.cpp +++ b/AST.cpp @@ -82,7 +82,7 @@ map, FunctionDefinition const*> ContractDefinition::getInterfaceFun FunctionDefinition const* ContractDefinition::getConstructor() const { for (ASTPointer 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 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, FunctionDefinition const*>> const& ContractDefinition: m_interfaceFunctionList.reset(new vector, FunctionDefinition const*>>()); for (ContractDefinition const* contract: getLinearizedBaseContracts()) for (ASTPointer 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())); -- cgit v1.2.3