aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/analysis
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2018-07-10 21:18:00 +0800
committerGitHub <noreply@github.com>2018-07-10 21:18:00 +0800
commitd9c3b10b1c5ad5d9dffbaceb48cd99e7293a6c56 (patch)
treef7755f7c68f324eaa784abff71e8fd37747401df /libsolidity/analysis
parent5c404fcfac113d2e25f80b298e485099baa27fb8 (diff)
parent951b745bd9324c2b07049ab9565ed7c3438fcb89 (diff)
downloaddexon-solidity-d9c3b10b1c5ad5d9dffbaceb48cd99e7293a6c56.tar
dexon-solidity-d9c3b10b1c5ad5d9dffbaceb48cd99e7293a6c56.tar.gz
dexon-solidity-d9c3b10b1c5ad5d9dffbaceb48cd99e7293a6c56.tar.bz2
dexon-solidity-d9c3b10b1c5ad5d9dffbaceb48cd99e7293a6c56.tar.lz
dexon-solidity-d9c3b10b1c5ad5d9dffbaceb48cd99e7293a6c56.tar.xz
dexon-solidity-d9c3b10b1c5ad5d9dffbaceb48cd99e7293a6c56.tar.zst
dexon-solidity-d9c3b10b1c5ad5d9dffbaceb48cd99e7293a6c56.zip
Merge pull request #4465 from ethereum/tupleAssignment
Disallow tuple assignment with mismatching number of components.
Diffstat (limited to 'libsolidity/analysis')
-rw-r--r--libsolidity/analysis/TypeChecker.cpp20
1 files changed, 1 insertions, 19 deletions
diff --git a/libsolidity/analysis/TypeChecker.cpp b/libsolidity/analysis/TypeChecker.cpp
index ed7f05f7..20e423e6 100644
--- a/libsolidity/analysis/TypeChecker.cpp
+++ b/libsolidity/analysis/TypeChecker.cpp
@@ -1337,7 +1337,6 @@ bool TypeChecker::visit(Conditional const& _conditional)
bool TypeChecker::visit(Assignment const& _assignment)
{
- bool const v050 = m_scope->sourceUnit().annotation().experimentalFeatures.count(ExperimentalFeature::V050);
requireLValue(_assignment.leftHandSide());
TypePointer t = type(_assignment.leftHandSide());
_assignment.annotation().type = t;
@@ -1354,25 +1353,8 @@ bool TypeChecker::visit(Assignment const& _assignment)
expectType(_assignment.rightHandSide(), *tupleType);
// expectType does not cause fatal errors, so we have to check again here.
- if (TupleType const* rhsType = dynamic_cast<TupleType const*>(type(_assignment.rightHandSide()).get()))
- {
+ if (dynamic_cast<TupleType const*>(type(_assignment.rightHandSide()).get()))
checkDoubleStorageAssignment(_assignment);
- // @todo For 0.5.0, this code shoud move to TupleType::isImplicitlyConvertibleTo,
- // but we cannot do it right now.
- if (rhsType->components().size() != tupleType->components().size())
- {
- string message =
- "Different number of components on the left hand side (" +
- toString(tupleType->components().size()) +
- ") than on the right hand side (" +
- toString(rhsType->components().size()) +
- ").";
- if (v050)
- m_errorReporter.typeError(_assignment.location(), message);
- else
- m_errorReporter.warning(_assignment.location(), message);
- }
- }
}
else if (t->category() == Type::Category::Mapping)
{