| var A = class A { }; |
| var B = class B extends A { |
| constructor(beforeSuper, returnThis) { |
| var f = () => returnThis ? this : {}; |
| if (beforeSuper) { |
| let val = f(); |
| super(); |
| } else { |
| super(); |
| let val = f(); |
| } |
| } |
| }; |
| |
| var exception = null; |
| for (var i=0; i < 10000; i++) { |
| try { |
| new B(true, true); |
| } catch (e) { |
| exception = e; |
| if (!(e instanceof ReferenceError)) |
| throw "Exception thrown was not a reference error"; |
| } |
| |
| if (!exception) |
| throw "Exception not thrown for an unitialized this at iteration"; |
| |
| var a = new B(false, true); |
| var b = new B(false, false); |
| var c = new B(true, false); |
| } |