56f1bc7417919124790be4f9d1b3239f5f57314d
[WebKit-https.git] / JSTests / stress / type-check-hoisting-phase-hoist-check-structure-on-tdz-this-value.js
1 function __isPropertyOfType(obj, name, type) {
2     desc = Object.getOwnPropertyDescriptor(obj, name)
3     return typeof type === 'undefined' || typeof desc.value === type;
4 }
5 function __getProperties(obj, type) {
6     let properties = [];
7     for (let name of Object.getOwnPropertyNames(obj)) {
8         if (__isPropertyOfType(obj, name, type)) properties.push(name);
9     }
10     let proto = Object.getPrototypeOf(obj);
11     while (proto && proto != Object.prototype) {
12         Object.getOwnPropertyNames(proto).forEach(name => {
13         });
14         proto = Object.getPrototypeOf(proto);
15     }
16     return properties;
17 }
18 function* __getObjects(root = this, level = 0) {
19     if (level > 4) return;
20     let obj_names = __getProperties(root, 'object');
21     for (let obj_name of obj_names) {
22         let obj = root[obj_name];
23         yield* __getObjects(obj, level + 1);
24     }
25 }
26 function __getRandomObject() {
27     for (let obj of __getObjects()) {
28     }
29 }
30 var theClass = class {
31     constructor() {
32         if (242487 != null && typeof __getRandomObject() == "object") try {
33         } catch (e) {}
34     }
35 };
36 var childClass = class Class extends theClass {
37     constructor() {
38         var arrow = () => {
39             try {
40                 super();
41             } catch (e) {}
42             this.idValue
43         };
44         arrow()()();
45     }
46 };
47 for (var counter = 0; counter < 1000; counter++) {
48     try {
49         new childClass();
50     } catch (e) {}
51 }