mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-30 08:41:15 +00:00
LibJS: Add AsyncIteratorPrototype
This commit is contained in:
parent
da42c1552c
commit
7fd38eac98
Notes:
sideshowbarker
2024-07-18 00:32:30 +09:00
Author: https://github.com/davidot Commit: https://github.com/SerenityOS/serenity/commit/7fd38eac986 Pull-request: https://github.com/SerenityOS/serenity/pull/11041 Reviewed-by: https://github.com/linusg
|
@ -43,6 +43,7 @@ set(SOURCES
|
|||
Runtime/AsyncFunctionPrototype.cpp
|
||||
Runtime/AsyncGeneratorFunctionConstructor.cpp
|
||||
Runtime/AsyncGeneratorFunctionPrototype.cpp
|
||||
Runtime/AsyncIteratorPrototype.cpp
|
||||
Runtime/AtomicsObject.cpp
|
||||
Runtime/BigInt.cpp
|
||||
Runtime/BigIntConstructor.cpp
|
||||
|
|
|
@ -88,6 +88,7 @@
|
|||
#define JS_ENUMERATE_ITERATOR_PROTOTYPES \
|
||||
__JS_ENUMERATE(Iterator, iterator) \
|
||||
__JS_ENUMERATE(ArrayIterator, array_iterator) \
|
||||
__JS_ENUMERATE(AsyncIterator, async_iterator) \
|
||||
__JS_ENUMERATE(MapIterator, map_iterator) \
|
||||
__JS_ENUMERATE(RegExpStringIterator, regexp_string_iterator) \
|
||||
__JS_ENUMERATE(SetIterator, set_iterator) \
|
||||
|
|
31
Userland/Libraries/LibJS/Runtime/AsyncIteratorPrototype.cpp
Normal file
31
Userland/Libraries/LibJS/Runtime/AsyncIteratorPrototype.cpp
Normal file
|
@ -0,0 +1,31 @@
|
|||
/*
|
||||
* Copyright (c) 2021, David Tuin <davidot@serenityos.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include <LibJS/Runtime/AsyncIteratorPrototype.h>
|
||||
|
||||
namespace JS {
|
||||
|
||||
AsyncIteratorPrototype::AsyncIteratorPrototype(GlobalObject& global_object)
|
||||
: Object(*global_object.object_prototype())
|
||||
{
|
||||
}
|
||||
|
||||
void AsyncIteratorPrototype::initialize(GlobalObject& global_object)
|
||||
{
|
||||
auto& vm = this->vm();
|
||||
Object::initialize(global_object);
|
||||
u8 attr = Attribute::Writable | Attribute::Enumerable;
|
||||
define_native_function(*vm.well_known_symbol_async_iterator(), symbol_async_iterator, 0, attr);
|
||||
}
|
||||
|
||||
// 27.1.3.1 %AsyncIteratorPrototype% [ @@asyncIterator ] ( ), https://tc39.es/ecma262/#sec-asynciteratorprototype-asynciterator
|
||||
JS_DEFINE_NATIVE_FUNCTION(AsyncIteratorPrototype::symbol_async_iterator)
|
||||
{
|
||||
// 1. Return the this value.
|
||||
return vm.this_value(global_object);
|
||||
}
|
||||
|
||||
}
|
25
Userland/Libraries/LibJS/Runtime/AsyncIteratorPrototype.h
Normal file
25
Userland/Libraries/LibJS/Runtime/AsyncIteratorPrototype.h
Normal file
|
@ -0,0 +1,25 @@
|
|||
/*
|
||||
* Copyright (c) 2021, David Tuin <davidot@serenityos.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <LibJS/Runtime/PrototypeObject.h>
|
||||
|
||||
namespace JS {
|
||||
|
||||
class AsyncIteratorPrototype final : public Object {
|
||||
JS_OBJECT(AsyncIteratorPrototype, Object)
|
||||
|
||||
public:
|
||||
explicit AsyncIteratorPrototype(GlobalObject&);
|
||||
virtual void initialize(GlobalObject&) override;
|
||||
virtual ~AsyncIteratorPrototype() override = default;
|
||||
|
||||
private:
|
||||
JS_DECLARE_NATIVE_FUNCTION(symbol_async_iterator);
|
||||
};
|
||||
|
||||
}
|
|
@ -24,6 +24,7 @@
|
|||
#include <LibJS/Runtime/AsyncFunctionPrototype.h>
|
||||
#include <LibJS/Runtime/AsyncGeneratorFunctionConstructor.h>
|
||||
#include <LibJS/Runtime/AsyncGeneratorFunctionPrototype.h>
|
||||
#include <LibJS/Runtime/AsyncIteratorPrototype.h>
|
||||
#include <LibJS/Runtime/AtomicsObject.h>
|
||||
#include <LibJS/Runtime/BigIntConstructor.h>
|
||||
#include <LibJS/Runtime/BigIntPrototype.h>
|
||||
|
|
Loading…
Reference in a new issue