mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 11:57: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())
|
if (!spreadable.is_undefined())
|
||||||
return spreadable.to_boolean();
|
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) {
|
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())
|
if (vm.exception())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (length + k > MAX_ARRAY_LIKE_INDEX) {
|
if (n + length > MAX_ARRAY_LIKE_INDEX) {
|
||||||
vm.throw_exception<TypeError>(global_object, ErrorType::ArrayMaxSize);
|
vm.throw_exception<TypeError>(global_object, ErrorType::ArrayMaxSize);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,4 +40,14 @@ describe("normal behavior", () => {
|
||||||
expect(concatenated[4]).toBe(1);
|
expect(concatenated[4]).toBe(1);
|
||||||
expect(concatenated[5]).toEqual([2, 3]);
|
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