LibJS: Remove Proxy() argument count check

Let's just treat missing arguments as undefined and throw with
'target/handler must be object' - this is more JavaScript-y.
This commit is contained in:
Linus Groh 2021-06-08 21:46:45 +01:00 committed by Andreas Kling
parent 5ff85abe8c
commit e39dd65cf0
Notes: sideshowbarker 2024-07-18 12:36:18 +09:00
3 changed files with 8 additions and 8 deletions

View File

@ -128,7 +128,6 @@
M(ProxySetPrototypeOfNonExtensible, "Proxy handler's setPrototypeOf trap violates " \
"invariant: the argument must match the prototype of the target if the " \
"target is non-extensible") \
M(ProxyTwoArguments, "Proxy constructor requires at least two arguments") \
M(ReduceNoInitial, "Reduce of empty array with no initial value") \
M(ReferenceNullishDeleteProperty, "Cannot delete property '{}' of {}") \
M(ReferenceNullishGetProperty, "Cannot get property '{}' of {}") \

View File

@ -38,11 +38,6 @@ Value ProxyConstructor::call()
Value ProxyConstructor::construct(Function&)
{
auto& vm = this->vm();
if (vm.argument_count() < 2) {
vm.throw_exception<TypeError>(global_object(), ErrorType::ProxyTwoArguments);
return {};
}
auto target = vm.argument(0);
auto handler = vm.argument(1);

View File

@ -7,11 +7,17 @@ test("constructs properly", () => {
test("constructor argument count", () => {
expect(() => {
new Proxy();
}).toThrowWithMessage(TypeError, "Proxy constructor requires at least two arguments");
}).toThrowWithMessage(
TypeError,
"Expected target argument of Proxy constructor to be object, got undefined"
);
expect(() => {
new Proxy({});
}).toThrowWithMessage(TypeError, "Proxy constructor requires at least two arguments");
}).toThrowWithMessage(
TypeError,
"Expected handler argument of Proxy constructor to be object, got undefined"
);
});
test("constructor requires objects", () => {