Skip to content

Commit

Permalink
Update Object.freeze tests for resizable TypedArrays
Browse files Browse the repository at this point in the history
Object.freeze will always throw on variable-length TAs with this
has-consensus PR: tc39/ecma262#3453
  • Loading branch information
syg committed Nov 13, 2024
1 parent 8eee455 commit fff5521
Showing 1 changed file with 16 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,11 @@
esid: sec-object.freeze
description: >
Object.freeze throws on non-0-length TypedArrays backed by resizable
buffers but do not throw on 0-length ones
buffers
features: [resizable-arraybuffer]
includes: [resizableArrayBufferUtils.js]
---*/

// Freezing non-OOB non-zero-length TAs throws.
for (let ctor of ctors) {
const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT);
const fixedLength = new ctor(rab, 0, 4);
Expand All @@ -36,9 +35,15 @@ for (let ctor of ctors) {
const fixedLength = new ctor(rab, 0, 0);
const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 0);
const lengthTrackingWithOffset = new ctor(rab, 4 * ctor.BYTES_PER_ELEMENT);
Object.freeze(fixedLength);
Object.freeze(fixedLengthWithOffset);
Object.freeze(lengthTrackingWithOffset);
assert.throws(TypeError, () => {
Object.freeze(fixedLength);
});
assert.throws(TypeError, () => {
Object.freeze(fixedLengthWithOffset);
});
assert.throws(TypeError, () => {
Object.freeze(lengthTrackingWithOffset);
});
}
// If the buffer has been resized to make length-tracking TAs zero-length,
// freezing them also doesn't throw.
Expand All @@ -47,7 +52,11 @@ for (let ctor of ctors) {
const lengthTracking = new ctor(rab);
const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT);
rab.resize(2 * ctor.BYTES_PER_ELEMENT);
Object.freeze(lengthTrackingWithOffset);
assert.throws(TypeError, () => {
Object.freeze(lengthTrackingWithOffset);
});
rab.resize(0 * ctor.BYTES_PER_ELEMENT);
Object.freeze(lengthTracking);
assert.throws(TypeError, () => {
Object.freeze(lengthTracking);
});
}

0 comments on commit fff5521

Please sign in to comment.