Files
scriptc/tests/corpus/native-array-integrity.js
Chris Tate f8906d0b75 Expand static native object and array semantics (#569)
* Support primitive and function property descriptors

* Dispatch literal bracket calls to native class methods

* Handle numeric class method keys in bracket calls

* Call function values returned by class accessors

* Expand native object and array semantics

* Keep new corpus fixtures aligned with compiler gates

* Lower Object.isFrozen arguments once
2026-09-29 08:30:54 -05:00

28 lines
1.2 KiB
JavaScript

const sealed = JSON.parse('[1,2]');
Object.seal(sealed);
console.log(Object.isExtensible(sealed), Object.isSealed(sealed), Object.isFrozen(sealed));
console.log(Object.getOwnPropertyDescriptor(sealed, '0').configurable);
console.log(Object.getOwnPropertyDescriptor(sealed, '0').writable);
sealed[0] = 4;
console.log(sealed[0]);
for (const operation of [() => sealed.pop(), () => sealed.shift(), () => sealed.push(3)]) {
try { operation(); } catch (error) { console.log(error.name); }
}
console.log(sealed.join(','));
const frozen = JSON.parse('[3,5]');
Object.freeze(frozen);
console.log(Object.isSealed(frozen), Object.isFrozen(frozen));
console.log(Object.getOwnPropertyDescriptor(frozen, '0').writable);
console.log(Object.getOwnPropertyDescriptor(frozen, 'length').writable);
for (const operation of [() => { frozen[0] = 9; }, () => frozen.reverse(), () => frozen.sort()]) {
try { operation(); } catch (error) { console.log(error.name); }
}
console.log(frozen.join(','));
const empty = JSON.parse('[]');
Object.preventExtensions(empty);
console.log(Object.isSealed(empty), Object.isFrozen(empty));
try { empty.push(1); } catch (error) { console.log(error.name); }
console.log(empty.length);