Disallow implementation of abstract function by constructor of derived class.

This commit is contained in:
chriseth committed 2016-06-06 19:38:22 +02:00
1 parent a1aee031d1
commit ab7a22f4a0
2 files changed
+7 -1

No files matched your search

+4 -1
View File
@@ -32,7 +32,7 @@ using namespace dev;
using namespace dev::solidity;
bool TypeChecker::checkTypeRequirements(const ContractDefinition& _contract)
bool TypeChecker::checkTypeRequirements(ContractDefinition const& _contract)
{
try
{
@@ -174,6 +174,9 @@ void TypeChecker::checkContractAbstractFunctions(ContractDefinition const& _cont
for (ContractDefinition const* contract: boost::adaptors::reverse(_contract.annotation().linearizedBaseContracts))
for (FunctionDefinition const* function: contract->definedFunctions())
{
// Take constructors out of overload hierarchy
if (function->isConstructor())
continue;
auto& overloads = functions[function->name()];
FunctionTypePointer funType = make_shared<FunctionType>(*function);
auto it = find_if(overloads.begin(), overloads.end(), [&](FunTypeAndFlag const& _funAndFlag)