1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 08:57:34 +00:00

LibJS: Don't generate bytecode after we've encountered a parser error

This commit is contained in:
Gunnar Beutner 2021-06-10 21:04:12 +02:00 committed by Andreas Kling
parent 319a60043b
commit 3a8f913eee

View file

@ -512,6 +512,13 @@ static bool parse_and_run(JS::Interpreter& interpreter, const StringView& source
if (s_dump_ast)
program->dump(0);
if (parser.has_errors()) {
auto error = parser.errors()[0];
auto hint = error.source_location_hint(source);
if (!hint.is_empty())
outln("{}", hint);
vm->throw_exception<JS::SyntaxError>(interpreter.global_object(), error.to_string());
} else {
if (s_dump_bytecode || s_run_bytecode) {
auto unit = JS::Bytecode::Generator::generate(*program);
if (s_dump_bytecode) {
@ -529,17 +536,10 @@ static bool parse_and_run(JS::Interpreter& interpreter, const StringView& source
}
return true;
}
if (parser.has_errors()) {
auto error = parser.errors()[0];
auto hint = error.source_location_hint(source);
if (!hint.is_empty())
outln("{}", hint);
vm->throw_exception<JS::SyntaxError>(interpreter.global_object(), error.to_string());
} else {
interpreter.run(interpreter.global_object(), *program);
}
}
auto handle_exception = [&] {
auto* exception = vm->exception();