LibJS: Set the function names for the resolve, reject, and executor

These should all have a name with an empty string. Not only does test262
verify this, but it also verifies that (for the executor) the name
property is defined after the length property.
This commit is contained in:
Timothy Flynn 2021-08-21 17:15:08 -04:00 committed by Linus Groh
parent 5b303721e0
commit 98d8a858cd
Notes: sideshowbarker 2024-07-18 05:22:12 +09:00
2 changed files with 3 additions and 2 deletions

View file

@ -94,7 +94,7 @@ Promise::ResolvingFunctions Promise::create_resolving_functions()
vm.enqueue_promise_job(*job);
return js_undefined();
});
resolve_function->define_direct_property(vm.names.name, js_string(vm, vm.names.resolve.as_string()), Attribute::Configurable);
resolve_function->define_direct_property(vm.names.name, js_string(vm, String::empty()), Attribute::Configurable);
// 27.2.1.3.1 Promise Reject Functions, https://tc39.es/ecma262/#sec-promise-reject-functions
auto* reject_function = PromiseResolvingFunction::create(global_object(), *this, *already_resolved, [](auto& vm, auto&, auto& promise, auto& already_resolved) {
@ -105,7 +105,7 @@ Promise::ResolvingFunctions Promise::create_resolving_functions()
auto reason = vm.argument(0);
return promise.reject(reason);
});
reject_function->define_direct_property(vm.names.name, js_string(vm, vm.names.reject.as_string()), Attribute::Configurable);
reject_function->define_direct_property(vm.names.name, js_string(vm, String::empty()), Attribute::Configurable);
return { *resolve_function, *reject_function };
}

View file

@ -43,6 +43,7 @@ PromiseCapability new_promise_capability(GlobalObject& global_object, Value cons
return js_undefined();
});
executor->define_direct_property(vm.names.length, Value(2), Attribute::Configurable);
executor->define_direct_property(vm.names.name, js_string(vm, String::empty()), Attribute::Configurable);
MarkedValueList arguments(vm.heap());
arguments.append(executor);