mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 08:57:34 +00:00
LibJS: Replace iterator hint string argument with an enum
There's no reason at all for this to be a string or to accept arbitrary values - just because it's displayed as strings in the spec doesn't mean we have to do the same :^)
This commit is contained in:
parent
a5903ac4b6
commit
163d776df6
3 changed files with 10 additions and 6 deletions
|
@ -10,12 +10,11 @@
|
||||||
|
|
||||||
namespace JS {
|
namespace JS {
|
||||||
|
|
||||||
Object* get_iterator(GlobalObject& global_object, Value value, String hint, Value method)
|
Object* get_iterator(GlobalObject& global_object, Value value, IteratorHint hint, Value method)
|
||||||
{
|
{
|
||||||
auto& vm = global_object.vm();
|
auto& vm = global_object.vm();
|
||||||
VERIFY(hint == "sync" || hint == "async");
|
|
||||||
if (method.is_empty()) {
|
if (method.is_empty()) {
|
||||||
if (hint == "async")
|
if (hint == IteratorHint::Async)
|
||||||
TODO();
|
TODO();
|
||||||
auto object = value.to_object(global_object);
|
auto object = value.to_object(global_object);
|
||||||
if (!object)
|
if (!object)
|
||||||
|
@ -100,7 +99,7 @@ void get_iterator_values(GlobalObject& global_object, Value value, AK::Function<
|
||||||
{
|
{
|
||||||
auto& vm = global_object.vm();
|
auto& vm = global_object.vm();
|
||||||
|
|
||||||
auto iterator = get_iterator(global_object, value, "sync", method);
|
auto iterator = get_iterator(global_object, value, IteratorHint::Sync, method);
|
||||||
if (!iterator)
|
if (!iterator)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,12 @@ namespace JS {
|
||||||
// Common iterator operations defined in ECMA262 7.4
|
// Common iterator operations defined in ECMA262 7.4
|
||||||
// https://tc39.es/ecma262/#sec-operations-on-iterator-objects
|
// https://tc39.es/ecma262/#sec-operations-on-iterator-objects
|
||||||
|
|
||||||
Object* get_iterator(GlobalObject&, Value value, String hint = "sync", Value method = {});
|
enum class IteratorHint {
|
||||||
|
Sync,
|
||||||
|
Async,
|
||||||
|
};
|
||||||
|
|
||||||
|
Object* get_iterator(GlobalObject&, Value value, IteratorHint hint = IteratorHint::Sync, Value method = {});
|
||||||
bool is_iterator_complete(Object& iterator_result);
|
bool is_iterator_complete(Object& iterator_result);
|
||||||
Value create_iterator_result_object(GlobalObject&, Value value, bool done);
|
Value create_iterator_result_object(GlobalObject&, Value value, bool done);
|
||||||
|
|
||||||
|
|
|
@ -180,7 +180,7 @@ void VM::assign(const NonnullRefPtr<BindingPattern>& target, Value value, Global
|
||||||
|
|
||||||
switch (binding.kind) {
|
switch (binding.kind) {
|
||||||
case BindingPattern::Kind::Array: {
|
case BindingPattern::Kind::Array: {
|
||||||
auto iterator = get_iterator(global_object, value, "sync"sv, {});
|
auto iterator = get_iterator(global_object, value);
|
||||||
if (!iterator)
|
if (!iterator)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue