1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 22:27:35 +00:00

LibJS: Make eval() return the last value from the executed statement

This is kinda awkward but since the statement we're executing is
actually a JS::Program, we have to get the result via VM::last_value().
This commit is contained in:
Andreas Kling 2021-03-15 21:42:44 +01:00
parent a955fd4156
commit 45e6b5e601
2 changed files with 14 additions and 2 deletions

View file

@ -325,8 +325,10 @@ JS_DEFINE_NATIVE_FUNCTION(GlobalObject::eval)
auto& caller_frame = vm.call_stack().at(vm.call_stack().size() - 2);
TemporaryChange scope_change(vm.call_frame().scope, caller_frame->scope);
// FIXME: eval() should return the result of the executed code. This currently does not work.
return vm.interpreter().execute_statement(global_object, program);
vm.interpreter().execute_statement(global_object, program);
if (vm.exception())
return {};
return vm.last_value();
}
}