diff options
author | chriseth <chris@ethereum.org> | 2018-07-13 07:23:28 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-13 07:23:28 +0800 |
commit | 052f19c6b0aac3b4f60ee8a7f340033e0b5350f0 (patch) | |
tree | 82027ba467f6851c64984c77538ee424ae74f645 /libsolidity/codegen/ContractCompiler.cpp | |
parent | f0bc1bce895f67ccd8b21e244d1b7cbd8c8f9453 (diff) | |
parent | 62645d530253c365ac09979135e9037f2bde2934 (diff) | |
download | dexon-solidity-052f19c6b0aac3b4f60ee8a7f340033e0b5350f0.tar dexon-solidity-052f19c6b0aac3b4f60ee8a7f340033e0b5350f0.tar.gz dexon-solidity-052f19c6b0aac3b4f60ee8a7f340033e0b5350f0.tar.bz2 dexon-solidity-052f19c6b0aac3b4f60ee8a7f340033e0b5350f0.tar.lz dexon-solidity-052f19c6b0aac3b4f60ee8a7f340033e0b5350f0.tar.xz dexon-solidity-052f19c6b0aac3b4f60ee8a7f340033e0b5350f0.tar.zst dexon-solidity-052f19c6b0aac3b4f60ee8a7f340033e0b5350f0.zip |
Merge pull request #4431 from ethereum/tupleDeclaration
Disallow multi variable declarations with mismatching number of values.
Diffstat (limited to 'libsolidity/codegen/ContractCompiler.cpp')
-rw-r--r-- | libsolidity/codegen/ContractCompiler.cpp | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/libsolidity/codegen/ContractCompiler.cpp b/libsolidity/codegen/ContractCompiler.cpp index 93f698bc..bbb3db3d 100644 --- a/libsolidity/codegen/ContractCompiler.cpp +++ b/libsolidity/codegen/ContractCompiler.cpp @@ -833,20 +833,19 @@ bool ContractCompiler::visit(VariableDeclarationStatement const& _variableDeclar valueTypes = tupleType->components(); else valueTypes = TypePointers{expression->annotation().type}; - auto const& assignments = _variableDeclarationStatement.annotation().assignments; - solAssert(assignments.size() == valueTypes.size(), ""); - for (size_t i = 0; i < assignments.size(); ++i) + auto const& declarations = _variableDeclarationStatement.declarations(); + solAssert(declarations.size() == valueTypes.size(), ""); + for (size_t i = 0; i < declarations.size(); ++i) { - size_t j = assignments.size() - i - 1; + size_t j = declarations.size() - i - 1; solAssert(!!valueTypes[j], ""); - VariableDeclaration const* varDecl = assignments[j]; - if (!varDecl) - utils.popStackElement(*valueTypes[j]); - else + if (VariableDeclaration const* varDecl = declarations[j].get()) { utils.convertType(*valueTypes[j], *varDecl->annotation().type); utils.moveToStackVariable(*varDecl); } + else + utils.popStackElement(*valueTypes[j]); } } checker.check(); |