From 6d815a142fbf85e19ab4f061c6e4275a26ff2e5f Mon Sep 17 00:00:00 2001 From: Christian Parpart Date: Fri, 5 Oct 2018 15:38:14 +0200 Subject: Fixes invalid function calls to literals inside tuple assignment's LHS. --- libsolidity/analysis/TypeChecker.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'libsolidity/analysis') diff --git a/libsolidity/analysis/TypeChecker.cpp b/libsolidity/analysis/TypeChecker.cpp index 069be156..164b0b02 100644 --- a/libsolidity/analysis/TypeChecker.cpp +++ b/libsolidity/analysis/TypeChecker.cpp @@ -1444,8 +1444,12 @@ void TypeChecker::checkExpressionAssignment(Type const& _type, Expression const& auto const* tupleType = dynamic_cast(&_type); auto const& types = tupleType ? tupleType->components() : vector { _type.shared_from_this() }; - solAssert(tupleExpression->components().size() == types.size(), ""); - for (size_t i = 0; i < types.size(); i++) + solAssert( + tupleExpression->components().size() == types.size() || m_errorReporter.hasErrors(), + "Array sizes don't match or no errors generated." + ); + + for (size_t i = 0; i < min(tupleExpression->components().size(), types.size()); i++) if (types[i]) { solAssert(!!tupleExpression->components()[i], ""); -- cgit v1.2.3