diff options
-rw-r--r-- | libsolidity/analysis/TypeChecker.cpp | 4 | ||||
-rw-r--r-- | test/libsolidity/syntaxTests/inheritance/base_arguments_empty_parentheses.sol | 8 |
2 files changed, 2 insertions, 10 deletions
diff --git a/libsolidity/analysis/TypeChecker.cpp b/libsolidity/analysis/TypeChecker.cpp index 1678e5a5..f39504e1 100644 --- a/libsolidity/analysis/TypeChecker.cpp +++ b/libsolidity/analysis/TypeChecker.cpp @@ -558,10 +558,8 @@ void TypeChecker::endVisit(InheritanceSpecifier const& _inheritance) toString(parameterTypes.size()) + "." ); - if (arguments->size() != 0) - return; } - for (size_t i = 0; i < arguments->size(); ++i) + for (size_t i = 0; i < std::min(arguments->size(), parameterTypes.size()); ++i) if (!type(*(*arguments)[i])->isImplicitlyConvertibleTo(*parameterTypes[i])) m_errorReporter.typeError( (*arguments)[i]->location(), diff --git a/test/libsolidity/syntaxTests/inheritance/base_arguments_empty_parentheses.sol b/test/libsolidity/syntaxTests/inheritance/base_arguments_empty_parentheses.sol index 6aacc95e..4c6021ca 100644 --- a/test/libsolidity/syntaxTests/inheritance/base_arguments_empty_parentheses.sol +++ b/test/libsolidity/syntaxTests/inheritance/base_arguments_empty_parentheses.sol @@ -1,13 +1,7 @@ contract Base { constructor(uint) public {} } -contract Base2 { - constructor(uint, uint) public {} -} contract Derived is Base(2) { } contract Derived2 is Base(), Derived() { } -contract Derived3 is Base2(2,2) { } -contract Derived4 is Base2(2), Derived() { } // ---- -// TypeError: (156-162): Wrong argument count for constructor call: 0 arguments given but expected 1. -// TypeError: (235-243): Wrong argument count for constructor call: 1 arguments given but expected 2. +// TypeError: (101-107): Wrong argument count for constructor call: 0 arguments given but expected 1. |