Files
scriptc/tests/corpus/3044-array-slice-splice-positions.js
Chris Tate 183a0bbcec Lower static Array fill/copyWithin and position coercion (#457)
* Coerce static Array slice and splice positions

* Lower static Array fill and copyWithin with Test262 assertions
2026-09-25 23:17:24 -05:00

46 lines
2.9 KiB
JavaScript

const source = [10, 20, 30, 40];
console.log("slice", JSON.stringify(source.slice("1", "3")), JSON.stringify(source.slice(true, null)));
console.log("slice-default", JSON.stringify(source.slice()), JSON.stringify(source.slice(undefined, undefined)));
console.log("slice-range", JSON.stringify(source.slice("-2", Infinity)), JSON.stringify(source.slice(NaN, false)));
const sliceOrder = [];
const sliceResult = (() => {
sliceOrder.push("receiver");
return source;
})().slice(void sliceOrder.push("start"), void sliceOrder.push("end"));
console.log("slice-effects", JSON.stringify(sliceResult), sliceOrder.join(","));
const selectedStart = source.length === 4 ? "1" : undefined;
const absentStart = source.length === 3 ? "1" : undefined;
console.log("slice-union", JSON.stringify(source.slice(selectedStart)), JSON.stringify(source.slice(absentStart)));
const spliceSource = [10, 20, 30, 40];
console.log("splice-no-args", JSON.stringify(spliceSource.splice()), JSON.stringify(spliceSource));
console.log("splice-one-arg", JSON.stringify(spliceSource.splice("2")), JSON.stringify(spliceSource));
console.log("splice-undefined-count", JSON.stringify(spliceSource.splice("0", undefined)), JSON.stringify(spliceSource));
console.log("splice-undefined-start", JSON.stringify(spliceSource.splice(undefined)), JSON.stringify(spliceSource));
const spliceMore = [10, 20, 30, 40, 50];
console.log("splice-coerce", JSON.stringify(spliceMore.splice(true, "2")), JSON.stringify(spliceMore));
console.log("splice-null", JSON.stringify(spliceMore.splice(null, false)), JSON.stringify(spliceMore));
const selectedCount = source.length === 4 ? "2" : undefined;
const absentCount = source.length === 3 ? "2" : undefined;
const spliceUnion = [10, 20, 30, 40];
console.log("splice-union", JSON.stringify(spliceUnion.splice(1, selectedCount)), JSON.stringify(spliceUnion));
console.log("splice-union-undefined", JSON.stringify(spliceUnion.splice(0, absentCount)), JSON.stringify(spliceUnion));
const spliceOrder = [];
const spliceResult = spliceMore.splice(void spliceOrder.push("start"), void spliceOrder.push("count"));
console.log("splice-effects", JSON.stringify(spliceResult), JSON.stringify(spliceMore), spliceOrder.join(","));
console.log("toSpliced", JSON.stringify(source.toSpliced("1", "2")), JSON.stringify(source.toSpliced(false, true, 99)));
console.log("toSpliced-default", JSON.stringify(source.toSpliced()), JSON.stringify(source.toSpliced("2")));
console.log("toSpliced-undefined", JSON.stringify(source.toSpliced(undefined, undefined, 99)));
console.log("toSpliced-union", JSON.stringify(source.toSpliced(1, selectedCount)), JSON.stringify(source.toSpliced(1, absentCount)));
const copyOrder = [];
const copied = source.toSpliced(void copyOrder.push("start"), void copyOrder.push("count"), (() => {
copyOrder.push("item");
return 99;
})());
console.log("toSpliced-effects", JSON.stringify(copied), copyOrder.join(","), JSON.stringify(source));