mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Disallow empty tuples on the left hand side
This commit is contained in:
parent
9538024c81
commit
c4bc77874b
@ -1288,6 +1288,9 @@ void TypeChecker::checkExpressionAssignment(Type const& _type, Expression const&
|
|||||||
{
|
{
|
||||||
if (auto const* tupleExpression = dynamic_cast<TupleExpression const*>(&_expression))
|
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* 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 };
|
||||||
|
|
||||||
|
@ -16,9 +16,14 @@ contract C {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// ----
|
// ----
|
||||||
|
// TypeError: (41-43): Empty tuple on the left hand side.
|
||||||
// TypeError: (47-48): Type int_const 2 is not implicitly convertible to expected type tuple().
|
// TypeError: (47-48): Type int_const 2 is not implicitly convertible to expected type tuple().
|
||||||
|
// TypeError: (86-88): Empty tuple on the left hand side.
|
||||||
|
// TypeError: (173-175): Empty tuple on the left hand side.
|
||||||
// TypeError: (178-182): Type tuple(uint256,uint256) is not implicitly convertible to expected type tuple().
|
// TypeError: (178-182): Type tuple(uint256,uint256) is not implicitly convertible to expected type tuple().
|
||||||
// TypeError: (166-182): Different number of arguments in return statement than in returns declaration.
|
// TypeError: (166-182): Different number of arguments in return statement than in returns declaration.
|
||||||
|
// TypeError: (229-231): Empty tuple on the left hand side.
|
||||||
|
// TypeError: (401-404): Empty tuple on the left hand side.
|
||||||
// TypeError: (399-466): Compound assignment is not allowed for tuple types.
|
// TypeError: (399-466): Compound assignment is not allowed for tuple types.
|
||||||
// TypeError: (410-466): Type bytes32 is not implicitly convertible to expected type tuple().
|
// TypeError: (410-466): Type bytes32 is not implicitly convertible to expected type tuple().
|
||||||
// TypeError: (389-396): No matching declaration found after argument-dependent lookup.
|
// TypeError: (389-396): No matching declaration found after argument-dependent lookup.
|
||||||
|
Loading…
Reference in New Issue
Block a user