From 16f175d3b65cdace7f5672623c1053988dc18fa5 Mon Sep 17 00:00:00 2001 From: Matheus Aguiar Date: Wed, 17 Aug 2022 01:02:11 -0300 Subject: [PATCH] Disallow suffixes with zero or more than one return value. --- libsolidity/analysis/TypeChecker.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/libsolidity/analysis/TypeChecker.cpp b/libsolidity/analysis/TypeChecker.cpp index f255a3f84..a0c6bc4b9 100644 --- a/libsolidity/analysis/TypeChecker.cpp +++ b/libsolidity/analysis/TypeChecker.cpp @@ -3829,7 +3829,7 @@ void TypeChecker::endVisit(Literal const& _literal) optional parameterTypeMessage; if (parameterCountMessage.has_value()) - m_errorReporter.typeError(4778_error, _literal.location(), parameterCountMessage.value()); + m_errorReporter.typeError(9128_error, _literal.location(), parameterCountMessage.value()); else if (suffixFunctionType->parameterTypes().size() == 2) { solAssert(literalRationalType); @@ -3854,8 +3854,13 @@ void TypeChecker::endVisit(Literal const& _literal) if (suffixFunctionType->returnParameterTypes().size() == 1) _literal.annotation().type = suffixFunctionType->returnParameterTypes().front(); else - _literal.annotation().type = TypeProvider::tuple(suffixFunctionType->returnParameterTypes()); - + { + m_errorReporter.typeError( + 7848_error, + _literal.location(), + "Function must return exactly one value to be used as literal suffix." + ); + } isCompileTimeConstant = suffixFunctionType->isPure(); } }