mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 23:37:35 +00:00
LibJS: Fix small issues in Array.prototype.concat
This commit is contained in:
parent
91de1135a5
commit
9d1fd403af
2 changed files with 12 additions and 2 deletions
|
@ -531,7 +531,7 @@ JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::concat)
|
|||
if (!spreadable.is_undefined())
|
||||
return spreadable.to_boolean();
|
||||
|
||||
return object->is_array();
|
||||
return val.is_array(global_object);
|
||||
};
|
||||
|
||||
auto append_to_new_array = [&vm, &is_concat_spreadable, &new_array, &global_object, &n](Value arg) {
|
||||
|
@ -546,7 +546,7 @@ JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::concat)
|
|||
if (vm.exception())
|
||||
return;
|
||||
|
||||
if (length + k > MAX_ARRAY_LIKE_INDEX) {
|
||||
if (n + length > MAX_ARRAY_LIKE_INDEX) {
|
||||
vm.throw_exception<TypeError>(global_object, ErrorType::ArrayMaxSize);
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -40,4 +40,14 @@ describe("normal behavior", () => {
|
|||
expect(concatenated[4]).toBe(1);
|
||||
expect(concatenated[5]).toEqual([2, 3]);
|
||||
});
|
||||
|
||||
test("Proxy is concatenated as array", () => {
|
||||
var proxy = new Proxy([9, 8], {});
|
||||
var concatenated = array.concat(proxy);
|
||||
expect(array).toHaveLength(1);
|
||||
expect(concatenated).toHaveLength(3);
|
||||
expect(concatenated[0]).toBe("hello");
|
||||
expect(concatenated[1]).toBe(9);
|
||||
expect(concatenated[2]).toBe(8);
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue