Files
scriptc/tests/corpus/native-array-splice-coercion.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

19 lines
757 B
JavaScript

const values = JSON.parse('[0,1,2,3]');
let conversions = 0;
const start = { valueOf() { conversions++; return 1; } };
const count = { valueOf() { conversions++; return 2; } };
console.log(values.splice(start, count, 8, 9).join(','));
console.log(values.join(','), conversions);
console.log(values.splice(-1, 0, 7).join(','), values.join(','));
const sealed = JSON.parse('[1,2]');
Object.seal(sealed);
let sealedConversions = 0;
const sealedStart = { valueOf() { sealedConversions++; return 0; } };
console.log(sealed.splice(sealedStart, 1, 3).join(','), sealed.join(','), sealedConversions);
const frozen = JSON.parse('[4,5]');
Object.freeze(frozen);
try { frozen.splice(0, 1); } catch (error) { console.log(error.name); }
console.log(frozen.join(','));