From cee93d946d798a4076ab5df5f32c5687608defe8 Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Fri, 5 May 2017 16:46:26 +0100 Subject: Support parsing let statements without a value --- libsolidity/inlineasm/AsmAnalysis.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'libsolidity/inlineasm/AsmAnalysis.cpp') diff --git a/libsolidity/inlineasm/AsmAnalysis.cpp b/libsolidity/inlineasm/AsmAnalysis.cpp index 7e00ffae..d8aca725 100644 --- a/libsolidity/inlineasm/AsmAnalysis.cpp +++ b/libsolidity/inlineasm/AsmAnalysis.cpp @@ -174,14 +174,20 @@ bool AsmAnalyzer::operator()(assembly::Assignment const& _assignment) bool AsmAnalyzer::operator()(assembly::VariableDeclaration const& _varDecl) { + bool success = true; int const expectedItems = _varDecl.variables.size(); - int const stackHeight = m_stackHeight; - bool success = boost::apply_visitor(*this, *_varDecl.value); - if ((m_stackHeight - stackHeight) != expectedItems) + if (_varDecl.value) { - m_errorReporter.declarationError(_varDecl.location, "Variable count mismatch."); - return false; + int const stackHeight = m_stackHeight; + success = boost::apply_visitor(*this, *_varDecl.value); + if ((m_stackHeight - stackHeight) != expectedItems) + { + m_errorReporter.declarationError(_varDecl.location, "Variable count mismatch."); + return false; + } } + else + m_stackHeight += expectedItems; for (auto const& variable: _varDecl.variables) { -- cgit v1.2.3 From 8d90e6fc4e76ccf41d8ccb59c23920623269cd06 Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Wed, 12 Jul 2017 19:51:16 +0100 Subject: Rename expectedItems to numVariables --- libsolidity/inlineasm/AsmAnalysis.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'libsolidity/inlineasm/AsmAnalysis.cpp') diff --git a/libsolidity/inlineasm/AsmAnalysis.cpp b/libsolidity/inlineasm/AsmAnalysis.cpp index d8aca725..76b0bbd5 100644 --- a/libsolidity/inlineasm/AsmAnalysis.cpp +++ b/libsolidity/inlineasm/AsmAnalysis.cpp @@ -175,19 +175,19 @@ bool AsmAnalyzer::operator()(assembly::Assignment const& _assignment) bool AsmAnalyzer::operator()(assembly::VariableDeclaration const& _varDecl) { bool success = true; - int const expectedItems = _varDecl.variables.size(); + int const numVariables = _varDecl.variables.size(); if (_varDecl.value) { int const stackHeight = m_stackHeight; success = boost::apply_visitor(*this, *_varDecl.value); - if ((m_stackHeight - stackHeight) != expectedItems) + if ((m_stackHeight - stackHeight) != numVariables) { m_errorReporter.declarationError(_varDecl.location, "Variable count mismatch."); return false; } } else - m_stackHeight += expectedItems; + m_stackHeight += numVariables; for (auto const& variable: _varDecl.variables) { -- cgit v1.2.3