Merge pull request #6067 from ethereum/asm-parser-fatal

Do not ignore fatal error in AsmParser for inline assembly
This commit is contained in:
chriseth
2019-02-21 18:12:13 +01:00
committed by GitHub
12 changed files with 3 additions and 12 deletions
+2
View File
@@ -1043,6 +1043,8 @@ ASTPointer<InlineAssembly> Parser::parseInlineAssembly(ASTPointer<ASTString> con
yul::Parser asmParser(m_errorReporter, yul::EVMDialect::looseAssemblyForEVM());
shared_ptr<yul::Block> block = asmParser.parse(m_scanner, true);
if (block == nullptr)
BOOST_THROW_EXCEPTION(FatalError());
nodeFactory.markEndPosition();
return nodeFactory.createNode<InlineAssembly>(_docString, block);
}
+1 -2
View File
@@ -48,8 +48,7 @@ shared_ptr<Block> Parser::parse(std::shared_ptr<Scanner> const& _scanner, bool _
}
catch (FatalError const&)
{
if (m_errorReporter.errors().empty())
throw; // Something is weird here, rather throw again.
solAssert(!m_errorReporter.errors().empty(), "Fatal error detected, but no error is reported.");
}
return nullptr;
}
@@ -7,4 +7,3 @@ contract C {
}
// ----
// ParserError: (67-70): Cannot use instruction names for identifier names.
// ParserError: (71-73): Expected ';' but got ':='
@@ -10,4 +10,3 @@ contract C {
}
// ----
// ParserError: (113-114): Literal, identifier or instruction expected.
// ParserError: (113-114): Expected primary expression.
@@ -7,4 +7,3 @@ contract C {
}
// ----
// ParserError: (72-73): Expected identifier but got '('
// ParserError: (79-80): Expected ';' but got '{'
@@ -7,4 +7,3 @@ contract C {
}
// ----
// ParserError: (72-73): Literal, identifier or instruction expected.
// ParserError: (72-73): Octal numbers not allowed.
@@ -8,4 +8,3 @@ contract C {
}
// ----
// ParserError: (87-89): Literal, identifier or instruction expected.
// ParserError: (87-89): Expected primary expression.
@@ -8,4 +8,3 @@ contract C {
}
// ----
// ParserError: (102-105): Cannot use instruction names for identifier names.
// ParserError: (105-106): Expected ';' but got ','
@@ -7,4 +7,3 @@ contract C {
}
// ----
// ParserError: (70-72): Variable name must precede ":=" in assignment.
// ParserError: (70-72): Expected primary expression.
@@ -7,4 +7,3 @@ contract C {
}
// ----
// ParserError: (70-71): Label name must precede ":".
// ParserError: (70-71): Expected primary expression.
@@ -7,4 +7,3 @@ contract C {
}
// ----
// ParserError: (69-70): Literal, identifier or instruction expected.
// ParserError: (69-70): Expected primary expression.
@@ -8,4 +8,3 @@ contract C {
}
// ----
// ParserError: (107-108): Literal, identifier or instruction expected.
// ParserError: (107-108): Expected primary expression.