Merge pull request #289 from chriseth/fix_base_constructor_params

Fix: Type checker crash for wrong number of base constructor arguments.
This commit is contained in:
chriseth 2015-12-10 15:48:48 +01:00
commit 251e7aa462

View File

@ -337,6 +337,7 @@ void TypeChecker::endVisit(InheritanceSpecifier const& _inheritance)
auto const& arguments = _inheritance.arguments(); auto const& arguments = _inheritance.arguments();
TypePointers parameterTypes = ContractType(*base).constructorType()->parameterTypes(); TypePointers parameterTypes = ContractType(*base).constructorType()->parameterTypes();
if (!arguments.empty() && parameterTypes.size() != arguments.size()) if (!arguments.empty() && parameterTypes.size() != arguments.size())
{
typeError( typeError(
_inheritance.location(), _inheritance.location(),
"Wrong argument count for constructor call: " + "Wrong argument count for constructor call: " +
@ -345,6 +346,8 @@ void TypeChecker::endVisit(InheritanceSpecifier const& _inheritance)
toString(parameterTypes.size()) + toString(parameterTypes.size()) +
"." "."
); );
return;
}
for (size_t i = 0; i < arguments.size(); ++i) for (size_t i = 0; i < arguments.size(); ++i)
if (!type(*arguments[i])->isImplicitlyConvertibleTo(*parameterTypes[i])) if (!type(*arguments[i])->isImplicitlyConvertibleTo(*parameterTypes[i]))