checkreturn-while.js (1228B)
1 load(libdir + "asserts.js"); 2 3 function testReturn() { 4 class C extends class {} { 5 constructor() { 6 while (true) { 7 return; 8 } 9 assertEq(true, false, "unreachable"); 10 } 11 } 12 13 for (var i = 0; i < 100; ++i) { 14 assertThrowsInstanceOf(() => new C(), ReferenceError); 15 } 16 } 17 testReturn(); 18 19 function testReturnSuper() { 20 class C extends class {} { 21 constructor() { 22 super(); 23 while (true) { 24 return; 25 } 26 assertEq(true, false, "unreachable"); 27 } 28 } 29 30 for (var i = 0; i < 100; ++i) { 31 // No error. 32 new C(); 33 } 34 } 35 testReturnSuper(); 36 37 function testReturnPrimitive() { 38 class C extends class {} { 39 constructor() { 40 while (true) { 41 return 0; 42 } 43 assertEq(true, false, "unreachable"); 44 } 45 } 46 47 for (var i = 0; i < 100; ++i) { 48 assertThrowsInstanceOf(() => new C(), TypeError); 49 } 50 } 51 testReturnPrimitive(); 52 53 function testReturnPrimitiveSuper() { 54 class C extends class {} { 55 constructor() { 56 super(); 57 while (true) { 58 return 0; 59 } 60 assertEq(true, false, "unreachable"); 61 } 62 } 63 64 for (var i = 0; i < 100; ++i) { 65 assertThrowsInstanceOf(() => new C(), TypeError); 66 } 67 } 68 testReturnPrimitiveSuper();