mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-08 10:01:53 +00:00
This is a normative change in the ECMA-262 spec. See:
de62e8d
This did not actually seem to affect our implementation as we were not
using generators here to begin with. So this patch is basically just
adding spec comments.
44 lines
1.1 KiB
C++
44 lines
1.1 KiB
C++
/*
|
|
* Copyright (c) 2020, Matthew Olsson <mattco@serenityos.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <LibJS/Runtime/Object.h>
|
|
|
|
namespace JS {
|
|
|
|
class ArrayIterator final : public Object {
|
|
JS_OBJECT(ArrayIterator, Object);
|
|
GC_DECLARE_ALLOCATOR(ArrayIterator);
|
|
|
|
public:
|
|
static GC::Ref<ArrayIterator> create(Realm&, Value array, Object::PropertyKind iteration_kind);
|
|
|
|
virtual ~ArrayIterator() override = default;
|
|
|
|
Value array() const { return m_array; }
|
|
void set_array(Value array) { m_array = array; }
|
|
|
|
Object::PropertyKind iteration_kind() const { return m_iteration_kind; }
|
|
|
|
size_t index() const { return m_index; }
|
|
void set_index(size_t index) { m_index = index; }
|
|
|
|
private:
|
|
ArrayIterator(Value array, Object::PropertyKind iteration_kind, Object& prototype);
|
|
|
|
virtual bool is_array_iterator() const override { return true; }
|
|
virtual void visit_edges(Cell::Visitor&) override;
|
|
|
|
Value m_array;
|
|
Object::PropertyKind m_iteration_kind;
|
|
size_t m_index { 0 };
|
|
};
|
|
|
|
template<>
|
|
inline bool Object::fast_is<ArrayIterator>() const { return is_array_iterator(); }
|
|
|
|
}
|