From 3451a30e5cd6d8bceedba70bf9c5012f263b3ec8 Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Fri, 5 May 2017 21:10:05 +0100 Subject: Display actual error message and not assertion in analysis --- libsolidity/inlineasm/AsmAnalysis.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'libsolidity/inlineasm/AsmAnalysis.cpp') diff --git a/libsolidity/inlineasm/AsmAnalysis.cpp b/libsolidity/inlineasm/AsmAnalysis.cpp index 5062fcf4..9e0ade2a 100644 --- a/libsolidity/inlineasm/AsmAnalysis.cpp +++ b/libsolidity/inlineasm/AsmAnalysis.cpp @@ -184,7 +184,15 @@ bool AsmAnalyzer::operator()(assembly::VariableDeclaration const& _varDecl) int const expectedItems = _varDecl.variables.size(); int const stackHeight = m_stackHeight; bool success = boost::apply_visitor(*this, *_varDecl.value); - solAssert(m_stackHeight - stackHeight == expectedItems, "Invalid value size."); + if ((m_stackHeight - stackHeight) != expectedItems) + { + m_errors.push_back(make_shared( + Error::Type::DeclarationError, + "Variable count mismatch.", + _varDecl.location + )); + return false; + } for (auto const& variable: _varDecl.variables) boost::get(m_currentScope->identifiers.at(variable.name)).active = true; -- cgit v1.2.3