Merge pull request #8752 from a3d4/fix-8711-typechecker-compiler-error

Type Checker: Fix internal error when assigning to empty tuples
This commit is contained in:
chriseth
2020-04-23 12:01:00 +02:00
committed by GitHub
3 changed files with 34 additions and 1 deletions
+4 -1
View File
@@ -1288,8 +1288,11 @@ void TypeChecker::checkExpressionAssignment(Type const& _type, Expression const&
{
if (auto const* tupleExpression = dynamic_cast<TupleExpression const*>(&_expression))
{
if (tupleExpression->components().empty())
m_errorReporter.typeError(_expression.location(), "Empty tuple on the left hand side.");
auto const* tupleType = dynamic_cast<TupleType const*>(&_type);
auto const& types = tupleType && tupleExpression->components().size() > 1 ? tupleType->components() : vector<TypePointer> { &_type };
auto const& types = tupleType && tupleExpression->components().size() != 1 ? tupleType->components() : vector<TypePointer> { &_type };
solAssert(
tupleExpression->components().size() == types.size() || m_errorReporter.hasErrors(),