diff --git a/libsolidity/parsing/Parser.cpp b/libsolidity/parsing/Parser.cpp index 42b88622d..c6bfadadd 100644 --- a/libsolidity/parsing/Parser.cpp +++ b/libsolidity/parsing/Parser.cpp @@ -1043,6 +1043,8 @@ ASTPointer Parser::parseInlineAssembly(ASTPointer con yul::Parser asmParser(m_errorReporter, yul::EVMDialect::looseAssemblyForEVM()); shared_ptr block = asmParser.parse(m_scanner, true); + if (block == nullptr) + BOOST_THROW_EXCEPTION(FatalError()); nodeFactory.markEndPosition(); return nodeFactory.createNode(_docString, block); } diff --git a/libyul/AsmParser.cpp b/libyul/AsmParser.cpp index c430821f0..0e94d3b63 100644 --- a/libyul/AsmParser.cpp +++ b/libyul/AsmParser.cpp @@ -48,8 +48,7 @@ shared_ptr Parser::parse(std::shared_ptr 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; } diff --git a/test/libsolidity/syntaxTests/inlineAssembly/invalid/assign_to_instruction.sol b/test/libsolidity/syntaxTests/inlineAssembly/invalid/assign_to_instruction.sol index 68a40209e..07bf01bef 100644 --- a/test/libsolidity/syntaxTests/inlineAssembly/invalid/assign_to_instruction.sol +++ b/test/libsolidity/syntaxTests/inlineAssembly/invalid/assign_to_instruction.sol @@ -7,4 +7,3 @@ contract C { } // ---- // ParserError: (67-70): Cannot use instruction names for identifier names. -// ParserError: (71-73): Expected ';' but got ':=' diff --git a/test/libsolidity/syntaxTests/inlineAssembly/invalid/empty_fun_arg.sol b/test/libsolidity/syntaxTests/inlineAssembly/invalid/empty_fun_arg.sol index e05277de6..9acac7a64 100644 --- a/test/libsolidity/syntaxTests/inlineAssembly/invalid/empty_fun_arg.sol +++ b/test/libsolidity/syntaxTests/inlineAssembly/invalid/empty_fun_arg.sol @@ -10,4 +10,3 @@ contract C { } // ---- // ParserError: (113-114): Literal, identifier or instruction expected. -// ParserError: (113-114): Expected primary expression. diff --git a/test/libsolidity/syntaxTests/inlineAssembly/invalid/empty_function_name.sol b/test/libsolidity/syntaxTests/inlineAssembly/invalid/empty_function_name.sol index 17995b093..203c84871 100644 --- a/test/libsolidity/syntaxTests/inlineAssembly/invalid/empty_function_name.sol +++ b/test/libsolidity/syntaxTests/inlineAssembly/invalid/empty_function_name.sol @@ -7,4 +7,3 @@ contract C { } // ---- // ParserError: (72-73): Expected identifier but got '(' -// ParserError: (79-80): Expected ';' but got '{' diff --git a/test/libsolidity/syntaxTests/inlineAssembly/invalid/invalid_number.sol b/test/libsolidity/syntaxTests/inlineAssembly/invalid/invalid_number.sol index b44d09e32..739c45bfe 100644 --- a/test/libsolidity/syntaxTests/inlineAssembly/invalid/invalid_number.sol +++ b/test/libsolidity/syntaxTests/inlineAssembly/invalid/invalid_number.sol @@ -7,4 +7,3 @@ contract C { } // ---- // ParserError: (72-73): Literal, identifier or instruction expected. -// ParserError: (72-73): Octal numbers not allowed. diff --git a/test/libsolidity/syntaxTests/inlineAssembly/invalid/missing_variable_in_assign.sol b/test/libsolidity/syntaxTests/inlineAssembly/invalid/missing_variable_in_assign.sol index 84d72c2d4..ec1cc2baf 100644 --- a/test/libsolidity/syntaxTests/inlineAssembly/invalid/missing_variable_in_assign.sol +++ b/test/libsolidity/syntaxTests/inlineAssembly/invalid/missing_variable_in_assign.sol @@ -8,4 +8,3 @@ contract C { } // ---- // ParserError: (87-89): Literal, identifier or instruction expected. -// ParserError: (87-89): Expected primary expression. diff --git a/test/libsolidity/syntaxTests/inlineAssembly/invalid/multiple_assign_to_instruction.sol b/test/libsolidity/syntaxTests/inlineAssembly/invalid/multiple_assign_to_instruction.sol index a751718c8..4e280bc63 100644 --- a/test/libsolidity/syntaxTests/inlineAssembly/invalid/multiple_assign_to_instruction.sol +++ b/test/libsolidity/syntaxTests/inlineAssembly/invalid/multiple_assign_to_instruction.sol @@ -8,4 +8,3 @@ contract C { } // ---- // ParserError: (102-105): Cannot use instruction names for identifier names. -// ParserError: (105-106): Expected ';' but got ',' diff --git a/test/libsolidity/syntaxTests/inlineAssembly/invalid/no_identifier_assignment.sol b/test/libsolidity/syntaxTests/inlineAssembly/invalid/no_identifier_assignment.sol index 109434f3a..1ec898ea5 100644 --- a/test/libsolidity/syntaxTests/inlineAssembly/invalid/no_identifier_assignment.sol +++ b/test/libsolidity/syntaxTests/inlineAssembly/invalid/no_identifier_assignment.sol @@ -7,4 +7,3 @@ contract C { } // ---- // ParserError: (70-72): Variable name must precede ":=" in assignment. -// ParserError: (70-72): Expected primary expression. diff --git a/test/libsolidity/syntaxTests/inlineAssembly/invalid/no_identifier_label.sol b/test/libsolidity/syntaxTests/inlineAssembly/invalid/no_identifier_label.sol index b6cd1dff7..4a1e72c63 100644 --- a/test/libsolidity/syntaxTests/inlineAssembly/invalid/no_identifier_label.sol +++ b/test/libsolidity/syntaxTests/inlineAssembly/invalid/no_identifier_label.sol @@ -7,4 +7,3 @@ contract C { } // ---- // ParserError: (70-71): Label name must precede ":". -// ParserError: (70-71): Expected primary expression. diff --git a/test/libsolidity/syntaxTests/inlineAssembly/invalid/whitespace_in_assignment.sol b/test/libsolidity/syntaxTests/inlineAssembly/invalid/whitespace_in_assignment.sol index e3444b389..940863276 100644 --- a/test/libsolidity/syntaxTests/inlineAssembly/invalid/whitespace_in_assignment.sol +++ b/test/libsolidity/syntaxTests/inlineAssembly/invalid/whitespace_in_assignment.sol @@ -7,4 +7,3 @@ contract C { } // ---- // ParserError: (69-70): Literal, identifier or instruction expected. -// ParserError: (69-70): Expected primary expression. diff --git a/test/libsolidity/syntaxTests/inlineAssembly/invalid/whitespace_in_multiple_assignment.sol b/test/libsolidity/syntaxTests/inlineAssembly/invalid/whitespace_in_multiple_assignment.sol index 0a03b7481..3601c3117 100644 --- a/test/libsolidity/syntaxTests/inlineAssembly/invalid/whitespace_in_multiple_assignment.sol +++ b/test/libsolidity/syntaxTests/inlineAssembly/invalid/whitespace_in_multiple_assignment.sol @@ -8,4 +8,3 @@ contract C { } // ---- // ParserError: (107-108): Literal, identifier or instruction expected. -// ParserError: (107-108): Expected primary expression.