[JSC] AI should not propagate AbstractValue relying on constant folding phase
[WebKit-https.git] / JSTests / stress / class-subclassing-string.js
1 A = class extends String { }
2 B = class extends A { get 4() { return 1; } }
3 C = class extends B { }
4
5 A.prototype[3] = 1;
6
7 function test() {
8     let a = new A("foo");
9     let b = new B("baz");
10     let c = new C("bar");
11
12     // String objects have a non-writable length property
13     a.length = 1;
14     b.length = 1;
15     c.length = 1;
16
17     if (a.length !== 3 || b.length !== 3 || c.length !== 3)
18         throw "not string objects";
19
20     if (!(a instanceof A && a instanceof String))
21         throw "a has incorrect prototype chain";
22
23     if (!(b instanceof B && b instanceof A && b instanceof String))
24         throw "b has incorrect prototype chain";
25
26     if (!(c instanceof C && c instanceof B && c instanceof A && c instanceof String))
27         throw "c has incorrect prototype chain";
28
29     if (a[4] !== undefined || b[4] !== 1 || c[4] !== 1)
30         throw "bad indexing type with accessors on chain";
31
32     if (a[3] !== 1 || b[3] !== 1 || c[3] !== 1)
33         throw "bad indexing type with values on chain";
34 }
35 noInline(test);
36
37 for (i = 0; i < 10000; i++)
38     test();