1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 11:18:11 +00:00

LibJS: Explicitly pass a "Function& new_target" to Function::construct

This allows the proxy handler to pass the proper new.target to construct
handlers.
This commit is contained in:
Matthew Olsson 2020-06-25 15:30:58 -07:00 committed by Andreas Kling
parent 19411e22d0
commit bda39ef7ab
38 changed files with 63 additions and 50 deletions

View file

@ -54,14 +54,14 @@ Value BoundFunction::call(Interpreter& interpreter)
return m_target_function->call(interpreter);
}
Value BoundFunction::construct(Interpreter& interpreter)
Value BoundFunction::construct(Interpreter& interpreter, Function& new_target)
{
if (auto this_value = interpreter.this_value(global_object()); m_constructor_prototype && this_value.is_object()) {
this_value.as_object().set_prototype(m_constructor_prototype);
if (interpreter.exception())
return {};
}
return m_target_function->construct(interpreter);
return m_target_function->construct(interpreter, new_target);
}
LexicalEnvironment* BoundFunction::create_environment()