[JSC] Do not use asArrayModes() with Structures because it discards TypedArray inform...
[WebKit-https.git] / JSTests / stress / call-varargs-spread-new-array-buffer2.js
1 function assert(b, m = "") {
2     if (!b)
3         throw new Error("Bad assert: " + m);
4 }
5 noInline(assert);
6
7 function bar(...args) {
8     return args;
9 }
10 noInline(bar);
11
12 function foo(a, ...args) {
13     let x = bar(...args, 42, ...[0, 1, 2, 3, 4], ...args); 
14     return x;
15 }
16 noInline(foo);
17
18 for (let i = 0; i < 10000; i++) {
19     let r = foo(i, i+1, i+2, i+3);
20     assert(r.length === 12);
21     assert(r[0] === i+1, JSON.stringify(r));
22     assert(r[1] === i+2, JSON.stringify(r));
23     assert(r[2] === i+3, JSON.stringify(r));
24     assert(r[3] === 42, JSON.stringify(r));
25     assert(r[4] === 0, JSON.stringify(r));
26     assert(r[5] === 1, JSON.stringify(r));
27     assert(r[6] === 2, JSON.stringify(r));
28     assert(r[7] === 3, JSON.stringify(r));
29     assert(r[8] === 4, JSON.stringify(r));
30     assert(r[9] === i+1, JSON.stringify(r));
31     assert(r[10] === i+2, JSON.stringify(r));
32     assert(r[11] === i+3, JSON.stringify(r));
33 }