// Labeled break tests. function f1() { foo: if ([1]) { bar: for (var i=0; i<100; i++) { if (i > 60) break foo; } assertEq(0, 1); } assertEq(i, 61); return true; } assertEq(f1(), true); // Label with no breaks. function f2() { foo: if ([1]) { for (var i=0; i<100; i++) { } } assertEq(i, 100); return true; } assertEq(f2(), true); // No breaks and early return. function f3() { foo: { if (true) { for (var i=0; i<100; i++) { } } return false; } assertEq(i, 100); return true; } assertEq(f3(), false); // Multiple breaks. function f4() { foo: { if (true) { for (var i=0; i<100; i++) if (i > 70) break foo; if (i > 80) break foo; } break foo; } assertEq(i, 71); return true; } assertEq(f4(), true);