mirror of
https://github.com/fergalmoran/ladybird.git
synced 2025-12-25 02:40:49 +00:00
LibJS: Let parser keep track of errors
Rather than printing them to stderr directly the parser now keeps a Vector<Error>, which allows the "owner" of the parser to consume them individually after parsing. The Error struct has a message, line number, column number and a to_string() helper function to format this information into a meaningful error message. The Function() constructor will now include an error message when throwing a SyntaxError.
This commit is contained in:
committed by
Andreas Kling
parent
00b61a212f
commit
33defef267
@@ -29,7 +29,6 @@
|
||||
#include <AK/HashMap.h>
|
||||
#include <AK/ScopeGuard.h>
|
||||
#include <AK/StdLibExtras.h>
|
||||
#include <stdio.h>
|
||||
|
||||
namespace JS {
|
||||
|
||||
@@ -1385,12 +1384,11 @@ void Parser::expected(const char* what)
|
||||
|
||||
void Parser::syntax_error(const String& message, size_t line, size_t column)
|
||||
{
|
||||
m_parser_state.m_has_errors = true;
|
||||
if (line == 0 || column == 0) {
|
||||
line = m_parser_state.m_current_token.line_number();
|
||||
column = m_parser_state.m_current_token.line_column();
|
||||
}
|
||||
fprintf(stderr, "Syntax Error: %s (line: %zu, column: %zu)\n", message.characters(), line, column);
|
||||
m_parser_state.m_errors.append({ message, line, column });
|
||||
}
|
||||
|
||||
void Parser::save_state()
|
||||
|
||||
Reference in New Issue
Block a user