mirror of https://github.com/tc39/test262.git
Test [[Set]] failure near integer limit in Array.prototype.push
This commit is contained in:
parent
896994413c
commit
c64db438df
47
test/built-ins/Array/prototype/push/length-near-integer-limit-set-failure.js
vendored
Normal file
47
test/built-ins/Array/prototype/push/length-near-integer-limit-set-failure.js
vendored
Normal file
|
@ -0,0 +1,47 @@
|
|||
// Copyright (C) 2020 Alexey Shvayka. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
esid: sec-array.prototype.push
|
||||
description: >
|
||||
A value is inserted in an array-like object whose length property is near the integer limit.
|
||||
Unsuccessful [[Set]] raises a TypeError.
|
||||
info: |
|
||||
Array.prototype.push ( ...items )
|
||||
|
||||
[...]
|
||||
2. Let len be ? LengthOfArrayLike(O).
|
||||
[...]
|
||||
4. Let argCount be the number of elements in items.
|
||||
[...]
|
||||
6. Repeat, while items is not empty,
|
||||
a. Remove the first element from items and let E be the value of the element.
|
||||
b. Perform ? Set(O, ! ToString(len), E, true).
|
||||
c. Set len to len + 1.
|
||||
[...]
|
||||
|
||||
OrdinarySetWithOwnDescriptor ( O, P, V, Receiver, ownDesc )
|
||||
|
||||
[...]
|
||||
3. If IsDataDescriptor(ownDesc) is true, then
|
||||
a. If ownDesc.[[Writable]] is false, return false.
|
||||
---*/
|
||||
|
||||
var arrayLike = {
|
||||
length: Number.MAX_SAFE_INTEGER - 3,
|
||||
};
|
||||
|
||||
Object.defineProperty(arrayLike, Number.MAX_SAFE_INTEGER - 1, {
|
||||
value: 33,
|
||||
writable: false,
|
||||
enumerable: true,
|
||||
configurable: true,
|
||||
});
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
Array.prototype.push.call(arrayLike, 1, 2, 3);
|
||||
});
|
||||
|
||||
assert.sameValue(arrayLike[Number.MAX_SAFE_INTEGER - 3], 1);
|
||||
assert.sameValue(arrayLike[Number.MAX_SAFE_INTEGER - 2], 2);
|
||||
assert.sameValue(arrayLike[Number.MAX_SAFE_INTEGER - 1], 33);
|
Loading…
Reference in New Issue