Explorar el Código

LibJS: Rename JS::Iterator to JS::IteratorRecord

This is in preparation for an upcoming implementation of the Iterator
Helpers proposal. That proposal will require a JS::Object type named
"Iterator", so this rename is to avoid conflicts.
Timothy Flynn hace 2 años
padre
commit
4977000fa0

+ 4 - 4
Userland/Libraries/LibJS/Bytecode/Op.cpp

@@ -263,7 +263,7 @@ void ImportCall::replace_references_impl(Register from, Register to)
 
 // FIXME: Since the accumulator is a Value, we store an object there and have to convert back and forth between that an Iterator records. Not great.
 // Make sure to put this into the accumulator before the iterator object disappears from the stack to prevent the members from being GC'd.
-static Object* iterator_to_object(VM& vm, Iterator iterator)
+static Object* iterator_to_object(VM& vm, IteratorRecord iterator)
 {
     auto& realm = *vm.current_realm();
     auto object = Object::create(realm, nullptr);
@@ -273,9 +273,9 @@ static Object* iterator_to_object(VM& vm, Iterator iterator)
     return object;
 }
 
-static Iterator object_to_iterator(VM& vm, Object& object)
+static IteratorRecord object_to_iterator(VM& vm, Object& object)
 {
-    return Iterator {
+    return IteratorRecord {
         .iterator = &MUST(object.get(vm.names.iterator)).as_object(),
         .next_method = MUST(object.get(vm.names.next)),
         .done = MUST(object.get(vm.names.done)).as_bool()
@@ -1052,7 +1052,7 @@ ThrowCompletionOr<void> GetObjectPropertyIterator::execute_impl(Bytecode::Interp
             properties.set(TRY(PropertyKey::from_value(vm, key)));
         }
     }
-    Iterator iterator {
+    IteratorRecord iterator {
         .iterator = object,
         .next_method = NativeFunction::create(
             interpreter.realm(),

+ 2 - 2
Userland/Libraries/LibJS/Runtime/AsyncFromSyncIterator.cpp

@@ -11,12 +11,12 @@
 
 namespace JS {
 
-NonnullGCPtr<AsyncFromSyncIterator> AsyncFromSyncIterator::create(Realm& realm, Iterator sync_iterator_record)
+NonnullGCPtr<AsyncFromSyncIterator> AsyncFromSyncIterator::create(Realm& realm, IteratorRecord sync_iterator_record)
 {
     return realm.heap().allocate<AsyncFromSyncIterator>(realm, realm, sync_iterator_record).release_allocated_value_but_fixme_should_propagate_errors();
 }
 
-AsyncFromSyncIterator::AsyncFromSyncIterator(Realm& realm, Iterator sync_iterator_record)
+AsyncFromSyncIterator::AsyncFromSyncIterator(Realm& realm, IteratorRecord sync_iterator_record)
     : Object(ConstructWithPrototypeTag::Tag, realm.intrinsics().async_from_sync_iterator_prototype())
     , m_sync_iterator_record(sync_iterator_record)
 {

+ 5 - 5
Userland/Libraries/LibJS/Runtime/AsyncFromSyncIterator.h

@@ -17,20 +17,20 @@ class AsyncFromSyncIterator final : public Object {
     JS_OBJECT(AsyncFromSyncIterator, Object);
 
 public:
-    static NonnullGCPtr<AsyncFromSyncIterator> create(Realm&, Iterator sync_iterator_record);
+    static NonnullGCPtr<AsyncFromSyncIterator> create(Realm&, IteratorRecord sync_iterator_record);
 
     virtual ThrowCompletionOr<void> initialize(Realm&) override;
     virtual ~AsyncFromSyncIterator() override = default;
 
     void visit_edges(Visitor& visitor) override;
 
-    Iterator& sync_iterator_record() { return m_sync_iterator_record; }
-    Iterator const& sync_iterator_record() const { return m_sync_iterator_record; }
+    IteratorRecord& sync_iterator_record() { return m_sync_iterator_record; }
+    IteratorRecord const& sync_iterator_record() const { return m_sync_iterator_record; }
 
 private:
-    AsyncFromSyncIterator(Realm&, Iterator sync_iterator_record);
+    AsyncFromSyncIterator(Realm&, IteratorRecord sync_iterator_record);
 
-    Iterator m_sync_iterator_record; // [[SyncIteratorRecord]]
+    IteratorRecord m_sync_iterator_record; // [[SyncIteratorRecord]]
 };
 
 }

+ 2 - 2
Userland/Libraries/LibJS/Runtime/AsyncFromSyncIteratorPrototype.cpp

@@ -199,7 +199,7 @@ JS_DEFINE_NATIVE_FUNCTION(AsyncFromSyncIteratorPrototype::throw_)
 }
 
 // 27.1.4.1 CreateAsyncFromSyncIterator ( syncIteratorRecord ), https://tc39.es/ecma262/#sec-createasyncfromsynciterator
-Iterator create_async_from_sync_iterator(VM& vm, Iterator sync_iterator_record)
+IteratorRecord create_async_from_sync_iterator(VM& vm, IteratorRecord sync_iterator_record)
 {
     auto& realm = *vm.current_realm();
 
@@ -211,7 +211,7 @@ Iterator create_async_from_sync_iterator(VM& vm, Iterator sync_iterator_record)
     auto next_method = MUST(async_iterator->get(vm.names.next));
 
     // 4. Let iteratorRecord be the Iterator Record { [[Iterator]]: asyncIterator, [[NextMethod]]: nextMethod, [[Done]]: false }.
-    auto iterator_record = Iterator { .iterator = async_iterator, .next_method = next_method, .done = false };
+    auto iterator_record = IteratorRecord { .iterator = async_iterator, .next_method = next_method, .done = false };
 
     // 5. Return iteratorRecord.
     return iterator_record;

+ 1 - 1
Userland/Libraries/LibJS/Runtime/AsyncFromSyncIteratorPrototype.h

@@ -30,6 +30,6 @@ private:
     JS_DECLARE_NATIVE_FUNCTION(throw_);
 };
 
-Iterator create_async_from_sync_iterator(VM&, Iterator sync_iterator);
+IteratorRecord create_async_from_sync_iterator(VM&, IteratorRecord sync_iterator);
 
 }

+ 1 - 1
Userland/Libraries/LibJS/Runtime/Iterator.h

@@ -12,7 +12,7 @@
 namespace JS {
 
 // 7.4.1 Iterator Records, https://tc39.es/ecma262/#sec-iterator-records
-struct Iterator {
+struct IteratorRecord {
     GCPtr<Object> iterator; // [[Iterator]]
     Value next_method;      // [[NextMethod]]
     bool done { false };    // [[Done]]

+ 7 - 7
Userland/Libraries/LibJS/Runtime/IteratorOperations.cpp

@@ -15,7 +15,7 @@
 namespace JS {
 
 // 7.4.2 GetIterator ( obj [ , hint [ , method ] ] ), https://tc39.es/ecma262/#sec-getiterator
-ThrowCompletionOr<Iterator> get_iterator(VM& vm, Value value, IteratorHint hint, Optional<Value> method)
+ThrowCompletionOr<IteratorRecord> get_iterator(VM& vm, Value value, IteratorHint hint, Optional<Value> method)
 {
     // 1. If hint is not present, set hint to sync.
 
@@ -61,14 +61,14 @@ ThrowCompletionOr<Iterator> get_iterator(VM& vm, Value value, IteratorHint hint,
     auto next_method = TRY(iterator.get(vm, vm.names.next));
 
     // 6. Let iteratorRecord be the Iterator Record { [[Iterator]]: iterator, [[NextMethod]]: nextMethod, [[Done]]: false }.
-    auto iterator_record = Iterator { .iterator = &iterator.as_object(), .next_method = next_method, .done = false };
+    auto iterator_record = IteratorRecord { .iterator = &iterator.as_object(), .next_method = next_method, .done = false };
 
     // 7. Return iteratorRecord.
     return iterator_record;
 }
 
 // 7.4.3 IteratorNext ( iteratorRecord [ , value ] ), https://tc39.es/ecma262/#sec-iteratornext
-ThrowCompletionOr<NonnullGCPtr<Object>> iterator_next(VM& vm, Iterator const& iterator_record, Optional<Value> value)
+ThrowCompletionOr<NonnullGCPtr<Object>> iterator_next(VM& vm, IteratorRecord const& iterator_record, Optional<Value> value)
 {
     Value result;
 
@@ -104,7 +104,7 @@ ThrowCompletionOr<Value> iterator_value(VM& vm, Object& iterator_result)
 }
 
 // 7.4.6 IteratorStep ( iteratorRecord ), https://tc39.es/ecma262/#sec-iteratorstep
-ThrowCompletionOr<GCPtr<Object>> iterator_step(VM& vm, Iterator const& iterator_record)
+ThrowCompletionOr<GCPtr<Object>> iterator_step(VM& vm, IteratorRecord const& iterator_record)
 {
     // 1. Let result be ? IteratorNext(iteratorRecord).
     auto result = TRY(iterator_next(vm, iterator_record));
@@ -123,7 +123,7 @@ ThrowCompletionOr<GCPtr<Object>> iterator_step(VM& vm, Iterator const& iterator_
 // 7.4.7 IteratorClose ( iteratorRecord, completion ), https://tc39.es/ecma262/#sec-iteratorclose
 // 7.4.9 AsyncIteratorClose ( iteratorRecord, completion ), https://tc39.es/ecma262/#sec-asynciteratorclose
 // NOTE: These only differ in that async awaits the inner value after the call.
-static Completion iterator_close_impl(VM& vm, Iterator const& iterator_record, Completion completion, IteratorHint iterator_hint)
+static Completion iterator_close_impl(VM& vm, IteratorRecord const& iterator_record, Completion completion, IteratorHint iterator_hint)
 {
     // 1. Assert: Type(iteratorRecord.[[Iterator]]) is Object.
 
@@ -172,13 +172,13 @@ static Completion iterator_close_impl(VM& vm, Iterator const& iterator_record, C
 }
 
 // 7.4.7 IteratorClose ( iteratorRecord, completion ), https://tc39.es/ecma262/#sec-iteratorclose
-Completion iterator_close(VM& vm, Iterator const& iterator_record, Completion completion)
+Completion iterator_close(VM& vm, IteratorRecord const& iterator_record, Completion completion)
 {
     return iterator_close_impl(vm, iterator_record, move(completion), IteratorHint::Sync);
 }
 
 // 7.4.9 AsyncIteratorClose ( iteratorRecord, completion ), https://tc39.es/ecma262/#sec-asynciteratorclose
-Completion async_iterator_close(VM& vm, Iterator const& iterator_record, Completion completion)
+Completion async_iterator_close(VM& vm, IteratorRecord const& iterator_record, Completion completion)
 {
     return iterator_close_impl(vm, iterator_record, move(completion), IteratorHint::Async);
 }

+ 5 - 5
Userland/Libraries/LibJS/Runtime/IteratorOperations.h

@@ -22,13 +22,13 @@ enum class IteratorHint {
     Async,
 };
 
-ThrowCompletionOr<Iterator> get_iterator(VM&, Value, IteratorHint = IteratorHint::Sync, Optional<Value> method = {});
-ThrowCompletionOr<NonnullGCPtr<Object>> iterator_next(VM&, Iterator const&, Optional<Value> = {});
-ThrowCompletionOr<GCPtr<Object>> iterator_step(VM&, Iterator const&);
+ThrowCompletionOr<IteratorRecord> get_iterator(VM&, Value, IteratorHint = IteratorHint::Sync, Optional<Value> method = {});
+ThrowCompletionOr<NonnullGCPtr<Object>> iterator_next(VM&, IteratorRecord const&, Optional<Value> = {});
+ThrowCompletionOr<GCPtr<Object>> iterator_step(VM&, IteratorRecord const&);
 ThrowCompletionOr<bool> iterator_complete(VM&, Object& iterator_result);
 ThrowCompletionOr<Value> iterator_value(VM&, Object& iterator_result);
-Completion iterator_close(VM&, Iterator const&, Completion);
-Completion async_iterator_close(VM&, Iterator const&, Completion);
+Completion iterator_close(VM&, IteratorRecord const&, Completion);
+Completion async_iterator_close(VM&, IteratorRecord const&, Completion);
 NonnullGCPtr<Object> create_iterator_result_object(VM&, Value, bool done);
 ThrowCompletionOr<MarkedVector<Value>> iterable_to_list(VM&, Value iterable, Optional<Value> method = {});
 

+ 5 - 5
Userland/Libraries/LibJS/Runtime/PromiseConstructor.cpp

@@ -39,7 +39,7 @@ static ThrowCompletionOr<Value> get_promise_resolve(VM& vm, Value constructor)
 using EndOfElementsCallback = Function<ThrowCompletionOr<Value>(PromiseValueList&)>;
 using InvokeElementFunctionCallback = Function<ThrowCompletionOr<Value>(PromiseValueList&, RemainingElements&, Value, size_t)>;
 
-static ThrowCompletionOr<Value> perform_promise_common(VM& vm, Iterator& iterator_record, Value constructor, PromiseCapability const& result_capability, Value promise_resolve, EndOfElementsCallback end_of_list, InvokeElementFunctionCallback invoke_element_function)
+static ThrowCompletionOr<Value> perform_promise_common(VM& vm, IteratorRecord& iterator_record, Value constructor, PromiseCapability const& result_capability, Value promise_resolve, EndOfElementsCallback end_of_list, InvokeElementFunctionCallback invoke_element_function)
 {
     VERIFY(constructor.is_constructor());
     VERIFY(promise_resolve.is_function());
@@ -113,7 +113,7 @@ static ThrowCompletionOr<Value> perform_promise_common(VM& vm, Iterator& iterato
 }
 
 // 27.2.4.1.2 PerformPromiseAll ( iteratorRecord, constructor, resultCapability, promiseResolve ), https://tc39.es/ecma262/#sec-performpromiseall
-static ThrowCompletionOr<Value> perform_promise_all(VM& vm, Iterator& iterator_record, Value constructor, PromiseCapability const& result_capability, Value promise_resolve)
+static ThrowCompletionOr<Value> perform_promise_all(VM& vm, IteratorRecord& iterator_record, Value constructor, PromiseCapability const& result_capability, Value promise_resolve)
 {
     auto& realm = *vm.current_realm();
 
@@ -147,7 +147,7 @@ static ThrowCompletionOr<Value> perform_promise_all(VM& vm, Iterator& iterator_r
 }
 
 // 27.2.4.2.1 PerformPromiseAllSettled ( iteratorRecord, constructor, resultCapability, promiseResolve ), https://tc39.es/ecma262/#sec-performpromiseallsettled
-static ThrowCompletionOr<Value> perform_promise_all_settled(VM& vm, Iterator& iterator_record, Value constructor, PromiseCapability const& result_capability, Value promise_resolve)
+static ThrowCompletionOr<Value> perform_promise_all_settled(VM& vm, IteratorRecord& iterator_record, Value constructor, PromiseCapability const& result_capability, Value promise_resolve)
 {
     auto& realm = *vm.current_realm();
 
@@ -190,7 +190,7 @@ static ThrowCompletionOr<Value> perform_promise_all_settled(VM& vm, Iterator& it
 }
 
 // 27.2.4.3.1 PerformPromiseAny ( iteratorRecord, constructor, resultCapability, promiseResolve ), https://tc39.es/ecma262/#sec-performpromiseany
-static ThrowCompletionOr<Value> perform_promise_any(VM& vm, Iterator& iterator_record, Value constructor, PromiseCapability& result_capability, Value promise_resolve)
+static ThrowCompletionOr<Value> perform_promise_any(VM& vm, IteratorRecord& iterator_record, Value constructor, PromiseCapability& result_capability, Value promise_resolve)
 {
     auto& realm = *vm.current_realm();
 
@@ -225,7 +225,7 @@ static ThrowCompletionOr<Value> perform_promise_any(VM& vm, Iterator& iterator_r
 }
 
 // 27.2.4.5.1 PerformPromiseRace ( iteratorRecord, constructor, resultCapability, promiseResolve ), https://tc39.es/ecma262/#sec-performpromiserace
-static ThrowCompletionOr<Value> perform_promise_race(VM& vm, Iterator& iterator_record, Value constructor, PromiseCapability const& result_capability, Value promise_resolve)
+static ThrowCompletionOr<Value> perform_promise_race(VM& vm, IteratorRecord& iterator_record, Value constructor, PromiseCapability const& result_capability, Value promise_resolve)
 {
     return perform_promise_common(
         vm, iterator_record, constructor, result_capability, promise_resolve,

+ 2 - 2
Userland/Libraries/LibJS/Runtime/SetPrototype.cpp

@@ -248,7 +248,7 @@ static ThrowCompletionOr<SetRecord> get_set_record(VM& vm, Value value)
 }
 
 // 10 GetKeysIterator ( setRec ), https://tc39.es/proposal-set-methods/#sec-getkeysiterator
-static ThrowCompletionOr<Iterator> get_keys_iterator(VM& vm, SetRecord const& set_record)
+static ThrowCompletionOr<IteratorRecord> get_keys_iterator(VM& vm, SetRecord const& set_record)
 {
     // 1. Let keysIter be ? Call(setRec.[[Keys]], setRec.[[Set]]).
     auto keys_iterator = TRY(call(vm, *set_record.keys, set_record.set));
@@ -265,7 +265,7 @@ static ThrowCompletionOr<Iterator> get_keys_iterator(VM& vm, SetRecord const& se
         return vm.throw_completion<TypeError>(ErrorType::NotAFunction, TRY_OR_THROW_OOM(vm, next_method.to_string_without_side_effects()));
 
     // 5. Return a new Iterator Record { [[Iterator]]: keysIter, [[NextMethod]]: nextMethod, [[Done]]: false }.
-    return Iterator { .iterator = &keys_iterator.as_object(), .next_method = next_method, .done = false };
+    return IteratorRecord { .iterator = &keys_iterator.as_object(), .next_method = next_method, .done = false };
 }
 
 // 1 Set.prototype.union ( other ), https://tc39.es/proposal-set-methods/#sec-set.prototype.union

+ 1 - 1
Userland/Libraries/LibJS/Runtime/VM.cpp

@@ -466,7 +466,7 @@ ThrowCompletionOr<void> VM::property_binding_initialization(BindingPattern const
 
 // 13.15.5.5 Runtime Semantics: IteratorDestructuringAssignmentEvaluation, https://tc39.es/ecma262/#sec-runtime-semantics-iteratordestructuringassignmentevaluation
 // 8.5.3 Runtime Semantics: IteratorBindingInitialization, https://tc39.es/ecma262/#sec-runtime-semantics-iteratorbindinginitialization
-ThrowCompletionOr<void> VM::iterator_binding_initialization(BindingPattern const& binding, Iterator& iterator_record, Environment* environment)
+ThrowCompletionOr<void> VM::iterator_binding_initialization(BindingPattern const& binding, IteratorRecord& iterator_record, Environment* environment)
 {
     auto& vm = *this;
     auto& realm = *vm.current_realm();

+ 1 - 1
Userland/Libraries/LibJS/Runtime/VM.h

@@ -289,7 +289,7 @@ private:
     VM(OwnPtr<CustomData>, ErrorMessages);
 
     ThrowCompletionOr<void> property_binding_initialization(BindingPattern const& binding, Value value, Environment* environment);
-    ThrowCompletionOr<void> iterator_binding_initialization(BindingPattern const& binding, Iterator& iterator_record, Environment* environment);
+    ThrowCompletionOr<void> iterator_binding_initialization(BindingPattern const& binding, IteratorRecord& iterator_record, Environment* environment);
 
     ThrowCompletionOr<NonnullGCPtr<Module>> resolve_imported_module(ScriptOrModule referencing_script_or_module, ModuleRequest const& module_request);
     ThrowCompletionOr<void> link_and_eval_module(Module& module);