Jelajahi Sumber

LibJS: Treat missing arg in Array.prototype.includes() as undefined

Linus Groh 5 tahun lalu
induk
melakukan
5db9becc4a

+ 2 - 2
Libraries/LibJS/Runtime/ArrayPrototype.cpp

@@ -422,8 +422,8 @@ Value ArrayPrototype::includes(Interpreter& interpreter)
     if (!array)
     if (!array)
         return {};
         return {};
 
 
-    i32 array_size = static_cast<i32>(array->elements().size());
-    if (interpreter.argument_count() == 0 || array_size == 0)
+    i32 array_size = array->elements().size();
+    if (array_size == 0)
         return Value(false);
         return Value(false);
 
 
     i32 from_index = 0;
     i32 from_index = 0;

+ 2 - 0
Libraries/LibJS/Tests/Array.prototype.includes.js

@@ -5,6 +5,8 @@ try {
 
 
     var array = ['hello', 'friends', 1, 2, false];
     var array = ['hello', 'friends', 1, 2, false];
 
 
+    assert([].includes() === false);
+    assert([undefined].includes() === true);
     assert(array.includes('hello') === true);
     assert(array.includes('hello') === true);
     assert(array.includes(1) === true);
     assert(array.includes(1) === true);
     assert(array.includes(1, -3) === true);
     assert(array.includes(1, -3) === true);