Invalid flags in a RegExp literal should be an early SyntaxError
[WebKit-https.git] / JSTests / stress / having-a-bad-time-with-derived-arrays.js
1 function assert(b) {
2     if (!b)
3         throw new Error;
4 }
5
6 let called = false;
7 function defineSetter() {
8     Array.prototype.__defineSetter__(0, function (x) {
9         assert(x === 42);
10         called = true;
11     });
12 }
13
14 class DerivedArray extends Array {
15     constructor(...args) {
16         super()
17     }
18 }
19
20 function iterate(a) {
21     for (let i = 0; i < a.length; i++) { }
22 }
23
24 let arr = [[[1, 2, 3, 4, 5], [ 2], 5], [[1, 2, 3], [ -4]]];
25 let d = new DerivedArray();
26 d[1] = 20;
27 d[2] = 40;
28 arr.push([d, [2]  -9]);
29
30 function doSlice(a) {
31     let r = a.slice();
32     defineSetter();
33     return r;
34 }
35
36 for (let i = 0; i < 10000; i++) {
37     for (let [a, b, ...c] of arr) {
38         let s = doSlice(a);
39         iterate(s);
40         delete s[0];
41         called = false;
42         s[0] = 42;
43         if (a === d) {
44             assert(called);
45             called = false;
46         }
47     }
48 }