[JSC] AI should not propagate AbstractValue relying on constant folding phase
[WebKit-https.git] / JSTests / stress / array-lastindexof-prototype-trap.js
1 function shouldBe(actual, expected) {
2     if (actual !== expected)
3         throw new Error('bad value: ' + actual);
4 }
5
6 class DerivedArray extends Array {
7     get 2() {
8         this.called = true;
9         return 42;
10     }
11 }
12
13 {
14     let array = [];
15     array.__proto__ = DerivedArray.prototype;
16     array.length = 42;
17     shouldBe(array.lastIndexOf(42), 2);
18     shouldBe(array.called, true);
19 }
20 {
21     let array = [20, 20];
22     array.__proto__ = DerivedArray.prototype;
23     array.length = 42;
24     shouldBe(array.lastIndexOf(42), 2);
25     shouldBe(array.called, true);
26 }
27 {
28     let array = ["Hello"];
29     array.__proto__ = DerivedArray.prototype;
30     array.length = 42;
31     shouldBe(array.lastIndexOf(42), 2);
32     shouldBe(array.called, true);
33 }
34 {
35     let array = [42.195];
36     array.__proto__ = DerivedArray.prototype;
37     array.length = 42;
38     shouldBe(array.lastIndexOf(42), 2);
39     shouldBe(array.called, true);
40 }
41 {
42     let array = ["Hello"];
43     array.__proto__ = DerivedArray.prototype;
44     array.length = 42;
45     ensureArrayStorage(array);
46     shouldBe(array.lastIndexOf(42), 2);
47     shouldBe(array.called, true);
48 }