From 15b4d4def23bcf0feb93c67dccc137baa59d5102 Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Fri, 5 May 2017 18:35:40 +0100 Subject: Support multiple variables in a variable declaration in inline assembly --- libsolidity/inlineasm/AsmCodeGen.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'libsolidity/inlineasm/AsmCodeGen.cpp') diff --git a/libsolidity/inlineasm/AsmCodeGen.cpp b/libsolidity/inlineasm/AsmCodeGen.cpp index b8af9dc6..1063d552 100644 --- a/libsolidity/inlineasm/AsmCodeGen.cpp +++ b/libsolidity/inlineasm/AsmCodeGen.cpp @@ -251,11 +251,16 @@ public: void operator()(assembly::VariableDeclaration const& _varDecl) { int height = m_assembly.stackHeight(); - boost::apply_visitor(*this, *_varDecl.value); - expectDeposit(1, height); - auto& var = boost::get(m_scope.identifiers.at(_varDecl.variable.name)); - var.stackHeight = height; - var.active = true; + int expectedItems = _varDecl.variables.size(); + for (auto const& value: _varDecl.values) + boost::apply_visitor(*this, value); + expectDeposit(expectedItems, height); + for (auto const& variable: _varDecl.variables) + { + auto& var = boost::get(m_scope.identifiers.at(variable.name)); + var.stackHeight = height++; + var.active = true; + } } void operator()(assembly::Block const& _block) { -- cgit v1.2.3 From cb4966046d9871b63084ddcf0ff6fac8a4c322aa Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Fri, 5 May 2017 18:56:29 +0100 Subject: Enable a single right hand item on let --- libsolidity/inlineasm/AsmCodeGen.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'libsolidity/inlineasm/AsmCodeGen.cpp') diff --git a/libsolidity/inlineasm/AsmCodeGen.cpp b/libsolidity/inlineasm/AsmCodeGen.cpp index 1063d552..02d5ced0 100644 --- a/libsolidity/inlineasm/AsmCodeGen.cpp +++ b/libsolidity/inlineasm/AsmCodeGen.cpp @@ -252,8 +252,7 @@ public: { int height = m_assembly.stackHeight(); int expectedItems = _varDecl.variables.size(); - for (auto const& value: _varDecl.values) - boost::apply_visitor(*this, value); + boost::apply_visitor(*this, *_varDecl.value); expectDeposit(expectedItems, height); for (auto const& variable: _varDecl.variables) { -- cgit v1.2.3