LibJS: Port create_iterator_result_object() to NonnullGCPtr
This commit is contained in:
parent
aff1ec6014
commit
d4eaaf905c
Notes:
sideshowbarker
2024-07-17 02:23:25 +09:00
4 changed files with 5 additions and 5 deletions
|
@ -53,7 +53,7 @@ static Object* async_from_sync_iterator_continuation(VM& vm, Object& result, Pro
|
||||||
// 8. Let unwrap be a new Abstract Closure with parameters (value) that captures done and performs the following steps when called:
|
// 8. Let unwrap be a new Abstract Closure with parameters (value) that captures done and performs the following steps when called:
|
||||||
auto unwrap = [done](VM& vm) -> ThrowCompletionOr<Value> {
|
auto unwrap = [done](VM& vm) -> ThrowCompletionOr<Value> {
|
||||||
// a. Return CreateIterResultObject(value, done).
|
// a. Return CreateIterResultObject(value, done).
|
||||||
return create_iterator_result_object(vm, vm.argument(0), done);
|
return create_iterator_result_object(vm, vm.argument(0), done).ptr();
|
||||||
};
|
};
|
||||||
|
|
||||||
// 9. Let onFulfilled be CreateBuiltinFunction(unwrap, 1, "", « »).
|
// 9. Let onFulfilled be CreateBuiltinFunction(unwrap, 1, "", « »).
|
||||||
|
@ -117,7 +117,7 @@ JS_DEFINE_NATIVE_FUNCTION(AsyncFromSyncIteratorPrototype::return_)
|
||||||
// 7. If return is undefined, then
|
// 7. If return is undefined, then
|
||||||
if (return_method == nullptr) {
|
if (return_method == nullptr) {
|
||||||
// a. Let iterResult be CreateIterResultObject(value, true).
|
// a. Let iterResult be CreateIterResultObject(value, true).
|
||||||
auto* iter_result = create_iterator_result_object(vm, vm.argument(0), true);
|
auto iter_result = create_iterator_result_object(vm, vm.argument(0), true);
|
||||||
|
|
||||||
// b. Perform ! Call(promiseCapability.[[Resolve]], undefined, « iterResult »).
|
// b. Perform ! Call(promiseCapability.[[Resolve]], undefined, « iterResult »).
|
||||||
MUST(call(vm, *promise_capability->resolve(), js_undefined(), iter_result));
|
MUST(call(vm, *promise_capability->resolve(), js_undefined(), iter_result));
|
||||||
|
|
|
@ -184,7 +184,7 @@ Completion async_iterator_close(VM& vm, Iterator const& iterator_record, Complet
|
||||||
}
|
}
|
||||||
|
|
||||||
// 7.4.10 CreateIterResultObject ( value, done ), https://tc39.es/ecma262/#sec-createiterresultobject
|
// 7.4.10 CreateIterResultObject ( value, done ), https://tc39.es/ecma262/#sec-createiterresultobject
|
||||||
Object* create_iterator_result_object(VM& vm, Value value, bool done)
|
NonnullGCPtr<Object> create_iterator_result_object(VM& vm, Value value, bool done)
|
||||||
{
|
{
|
||||||
auto& realm = *vm.current_realm();
|
auto& realm = *vm.current_realm();
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@ ThrowCompletionOr<bool> iterator_complete(VM&, Object& iterator_result);
|
||||||
ThrowCompletionOr<Value> iterator_value(VM&, Object& iterator_result);
|
ThrowCompletionOr<Value> iterator_value(VM&, Object& iterator_result);
|
||||||
Completion iterator_close(VM&, Iterator const&, Completion);
|
Completion iterator_close(VM&, Iterator const&, Completion);
|
||||||
Completion async_iterator_close(VM&, Iterator const&, Completion);
|
Completion async_iterator_close(VM&, Iterator const&, Completion);
|
||||||
Object* create_iterator_result_object(VM&, Value, bool done);
|
NonnullGCPtr<Object> create_iterator_result_object(VM&, Value, bool done);
|
||||||
ThrowCompletionOr<MarkedVector<Value>> iterable_to_list(VM&, Value iterable, Optional<Value> method = {});
|
ThrowCompletionOr<MarkedVector<Value>> iterable_to_list(VM&, Value iterable, Optional<Value> method = {});
|
||||||
|
|
||||||
using IteratorValueCallback = Function<Optional<Completion>(Value)>;
|
using IteratorValueCallback = Function<Optional<Completion>(Value)>;
|
||||||
|
|
|
@ -73,7 +73,7 @@ JS::Object* FormDataIterator::next()
|
||||||
if (m_iterator_kind == JS::Object::PropertyKind::Value)
|
if (m_iterator_kind == JS::Object::PropertyKind::Value)
|
||||||
return create_iterator_result_object(vm, entry_value, false);
|
return create_iterator_result_object(vm, entry_value, false);
|
||||||
|
|
||||||
return create_iterator_result_object(vm, JS::Array::create_from(realm(), { JS::PrimitiveString::create(vm, entry.name), entry_value }), false);
|
return create_iterator_result_object(vm, JS::Array::create_from(realm(), { JS::PrimitiveString::create(vm, entry.name), entry_value }), false).ptr();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue