ef8640fa6cb6c4387fcda645759da58f4d69a53a
[WebKit.git] / JSTests / stress / create-subclass-structure-might-throw.js
1 function assert(b) {
2     if (!b)
3         throw new Error("bad assertion.");
4 }
5
6 let targets = [Function, String, Array, Set, Map, WeakSet, WeakMap, RegExp, Number, Promise, Date, Boolean, Error, TypeError, SyntaxError, ArrayBuffer, Int32Array, Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Uint32Array, Float32Array, Float64Array, DataView];
7 for (let target of targets) {
8     let error = null;
9     let called = false;
10     let handler = {
11         get: function(theTarget, propName) {
12             assert(propName === "prototype");
13             error = new Error;
14             called = true;
15             throw error;
16         }
17     };
18
19     let proxy = new Proxy(target, handler);
20
21     for (let i = 0; i < 500; i++) {
22         let threw = false;
23         try {
24             new proxy;
25         } catch(e) {
26             threw = true;
27             assert(e === error);
28             error = null;
29         }
30         assert(threw);
31         assert(called);
32         called = false;
33     }
34 }