var testCase = function (actual, expected, message) { if (actual !== expected) { throw message + ". Expected '" + expected + "', but was '" + actual + "'"; } }; var A = class A { constructor() { this.id = 'A' } }; var B = class B extends A { constructor(beforeSuper) { var f = () => { if (this.id === 'A') { return 'ok'; } return 'ok'; }; let val; if (beforeSuper) { val = f(); super(); } else { super(); val = f(); } this.res = val; } }; var C = class C extends A { constructor(beforeSuper) { var f = () => { if (this > 5) { return 'ok'; } return 'ok'; }; let val; if (beforeSuper) { val = f(); super(); } else { super(); val = f(); } this.res = val; } }; var D = class D extends A { constructor(beforeSuper) { var f = () => { if (this < 5) { return 'ok'; } return 'ok'; }; let val; if (beforeSuper) { val = f(); super(); } else { super(); val = f(); } this.res = val; } }; var E = class E extends A { constructor(beforeSuper) { var f = () => { if (this !== 5) { return 'ok'; } return 'ok'; }; let val; if (beforeSuper) { val = f(); super(); } else { super(); val = f(); } this.res = val; } }; var F = class F extends A { constructor(beforeSuper) { var f = () => { if (this <= 5) { return 'ok'; } return 'ok'; }; let val; if (beforeSuper) { val = f(); super(); } else { super(); val = f(); } this.res = val; } }; var G = class G extends A { constructor(beforeSuper) { var f = () => { if (this >= 5) { return 'ok'; } return 'ok'; }; let val; if (beforeSuper) { val = f(); super(); } else { super(); val = f(); } this.res = val; } }; var G = class G extends A { constructor(beforeSuper) { var f = () => { if (this === 5) { return 'ok'; } return 'ok'; }; let val; if (beforeSuper) { val = f(); super(); } else { super(); val = f(); } this.res = val; } }; var tryToCreate = function (classForCreate) { var result = false; try { new classForCreate(true); } catch (e) { result = e instanceof ReferenceError; } return result; } var check = function (classForCheck) { testCase(tryToCreate(classForCheck), true, 'Exception wasn\'t thrown or was not a reference error'); var result = new classForCheck(false); testCase(result.res, 'ok', 'Error in setting id '); } for (var i = 0; i < 10000; i++) { check(B); check(C); check(D); check(E); check(F); check(G); }