From 0b960f5a9cde145775e5e24a52ac48e32d0969af Mon Sep 17 00:00:00 2001 From: Erik Kundt Date: Fri, 6 Jul 2018 22:53:55 +0200 Subject: Turns wrong argument count in base constructor call into en error. --- libsolidity/analysis/TypeChecker.cpp | 31 +++++++++---------------------- 1 file changed, 9 insertions(+), 22 deletions(-) (limited to 'libsolidity') diff --git a/libsolidity/analysis/TypeChecker.cpp b/libsolidity/analysis/TypeChecker.cpp index 78536664..1678e5a5 100644 --- a/libsolidity/analysis/TypeChecker.cpp +++ b/libsolidity/analysis/TypeChecker.cpp @@ -548,31 +548,18 @@ void TypeChecker::endVisit(InheritanceSpecifier const& _inheritance) if (arguments) { - bool v050 = m_scope->sourceUnit().annotation().experimentalFeatures.count(ExperimentalFeature::V050); - if (parameterTypes.size() != arguments->size()) { - if (arguments->size() == 0 && !v050) - m_errorReporter.warning( - _inheritance.location(), - "Wrong argument count for constructor call: " + - toString(arguments->size()) + - " arguments given but expected " + - toString(parameterTypes.size()) + - "." - ); - else - { - m_errorReporter.typeError( - _inheritance.location(), - "Wrong argument count for constructor call: " + - toString(arguments->size()) + - " arguments given but expected " + - toString(parameterTypes.size()) + - "." - ); + m_errorReporter.typeError( + _inheritance.location(), + "Wrong argument count for constructor call: " + + toString(arguments->size()) + + " arguments given but expected " + + toString(parameterTypes.size()) + + "." + ); + if (arguments->size() != 0) return; - } } for (size_t i = 0; i < arguments->size(); ++i) if (!type(*(*arguments)[i])->isImplicitlyConvertibleTo(*parameterTypes[i])) -- cgit v1.2.3 From 34a031609e1e7c5358f0e716eeb8ef1c4d25c81a Mon Sep 17 00:00:00 2001 From: Erik Kundt Date: Tue, 10 Jul 2018 12:05:41 +0200 Subject: Updates Changelog, syntax test and simplifies type checker. --- libsolidity/analysis/TypeChecker.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'libsolidity') 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(), -- cgit v1.2.3 From 7c7e154a7b93d880fd173f6d633b8767f12e2469 Mon Sep 17 00:00:00 2001 From: Erik Kundt Date: Wed, 11 Jul 2018 01:44:51 +0200 Subject: Improves error with suggestion to remove parantheses. --- libsolidity/analysis/TypeChecker.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'libsolidity') diff --git a/libsolidity/analysis/TypeChecker.cpp b/libsolidity/analysis/TypeChecker.cpp index f39504e1..fbfe2b72 100644 --- a/libsolidity/analysis/TypeChecker.cpp +++ b/libsolidity/analysis/TypeChecker.cpp @@ -556,7 +556,7 @@ void TypeChecker::endVisit(InheritanceSpecifier const& _inheritance) toString(arguments->size()) + " arguments given but expected " + toString(parameterTypes.size()) + - "." + ". Remove parentheses if you do not want to provide arguments here." ); } for (size_t i = 0; i < std::min(arguments->size(), parameterTypes.size()); ++i) -- cgit v1.2.3