mirror of
https://github.com/tc39/test262.git
synced 2025-05-03 22:40:28 +02:00
* [javascriptcore-test262-automation] changes from git@github.com:WebKit/webkit.git at sha 949e26452cfa153a7f4afe593da97e2fe9e1b706 on Tue Jul 03 2018 14:35:15 GMT-0400 (Eastern Daylight Time)
217 lines
5.9 KiB
JavaScript
217 lines
5.9 KiB
JavaScript
function assert(b) {
|
|
if (!b)
|
|
throw new Error("bad assertion");
|
|
}
|
|
noInline(assert);
|
|
|
|
;(function() {
|
|
function test1() {
|
|
let x = 20;
|
|
function foo() {
|
|
label: {
|
|
let y = 21;
|
|
let capY = function () { return y; }
|
|
assert(x === 20);
|
|
break label;
|
|
}
|
|
assert(x === 20);
|
|
}
|
|
foo();
|
|
}
|
|
|
|
function test2() {
|
|
let x = 20;
|
|
function capX() { return x; }
|
|
function foo() {
|
|
label1: {
|
|
label2: {
|
|
let y = 21;
|
|
let capY = function () { return y; }
|
|
break label2;
|
|
}
|
|
assert(x === 20);
|
|
}
|
|
assert(x === 20);
|
|
|
|
label1: {
|
|
label2: {
|
|
let y = 21;
|
|
let capY = function () { return y; }
|
|
assert(x === 20);
|
|
assert(y === 21);
|
|
break label1;
|
|
}
|
|
}
|
|
assert(x === 20);
|
|
|
|
label1: {
|
|
let y = 21;
|
|
let capY = function () { return y; }
|
|
label2: {
|
|
let y = 21;
|
|
let capY = function () { return y; }
|
|
assert(x === 20);
|
|
assert(y === 21);
|
|
break label1;
|
|
}
|
|
}
|
|
assert(x === 20);
|
|
}
|
|
foo()
|
|
}
|
|
|
|
function test3() {
|
|
let x = 20;
|
|
function capX() { return x; }
|
|
function foo() {
|
|
loop1: for (var i = 0; i++ < 1000; ) {
|
|
//assert(x === 20);
|
|
loop2: for (var j = 0; j++ < 1000; ) {
|
|
let y = 21;
|
|
let capY = function() { return y; }
|
|
assert(x === 20);
|
|
assert(y === 21);
|
|
continue loop1;
|
|
//break loop1;
|
|
}
|
|
}
|
|
assert(x === 20);
|
|
}
|
|
foo()
|
|
}
|
|
|
|
function test4() {
|
|
let x = 20;
|
|
function capX() { return x; }
|
|
function foo() {
|
|
loop1: for (var i = 0; i++ < 1000; ) {
|
|
loop2: for (var j = 0; j++ < 1000; ) {
|
|
let y = 21;
|
|
let capY = function() { return y; }
|
|
assert(x === 20);
|
|
assert(y === 21);
|
|
break loop1;
|
|
}
|
|
}
|
|
assert(x === 20);
|
|
}
|
|
foo()
|
|
}
|
|
|
|
function test5() {
|
|
let x = 20;
|
|
function capX() { return x; }
|
|
function foo() {
|
|
loop1: for (var i = 0; i++ < 1000; ) {
|
|
let y = 21;
|
|
let capY = function() { return y; }
|
|
loop2: for (var j = 0; j++ < 1000; ) {
|
|
let y = 21;
|
|
let capY = function() { return y; }
|
|
assert(x === 20);
|
|
assert(y === 21);
|
|
break loop1;
|
|
}
|
|
}
|
|
assert(x === 20);
|
|
}
|
|
foo()
|
|
}
|
|
|
|
function test6() {
|
|
let x = 20;
|
|
function capX() { return x; }
|
|
function foo() {
|
|
loop1: for (var i = 0; i++ < 1000; ) {
|
|
assert(x === 20);
|
|
let y = 21;
|
|
let capY = function() { return y; }
|
|
loop2: for (var j = 0; j++ < 1000; ) {
|
|
let y = 21;
|
|
let capY = function() { return y; }
|
|
assert(x === 20);
|
|
assert(y === 21);
|
|
try {
|
|
throw new Error();
|
|
} catch(e) {
|
|
} finally {
|
|
assert(x === 20);
|
|
continue loop1;
|
|
}
|
|
}
|
|
}
|
|
assert(x === 20);
|
|
}
|
|
foo()
|
|
}
|
|
|
|
function test7() {
|
|
let x = 20;
|
|
function capX() { return x; }
|
|
function foo() {
|
|
loop1: for (var i = 0; i++ < 1000; ) {
|
|
assert(x === 20);
|
|
let y = 21;
|
|
let capY = function() { return y; }
|
|
loop2: for (var j = 0; j++ < 1000; ) {
|
|
let y = 21;
|
|
let capY = function() { return y; }
|
|
assert(x === 20);
|
|
assert(y === 21);
|
|
try {
|
|
throw new Error();
|
|
} catch(e) {
|
|
continue loop1;
|
|
} finally {
|
|
let x = 40;
|
|
let capX = function() { return x; }
|
|
assert(x === 40);
|
|
}
|
|
}
|
|
}
|
|
assert(x === 20);
|
|
}
|
|
foo()
|
|
}
|
|
|
|
function test8() {
|
|
let x = 20;
|
|
function capX() { return x; }
|
|
function foo() {
|
|
loop1: for (var i = 0; i++ < 1000; ) {
|
|
assert(x === 20);
|
|
let y = 21;
|
|
let capY = function() { return y; }
|
|
loop2: for (var j = 0; j++ < 1000; ) {
|
|
let y = 21;
|
|
let capY = function() { return y; }
|
|
assert(x === 20);
|
|
assert(y === 21);
|
|
try {
|
|
throw new Error();
|
|
} catch(e) {
|
|
break loop1;
|
|
} finally {
|
|
let x = 40;
|
|
let capX = function() { return x; }
|
|
assert(x === 40);
|
|
}
|
|
}
|
|
}
|
|
assert(x === 20);
|
|
}
|
|
foo()
|
|
}
|
|
|
|
for (var i = 0; i < 10; i++) {
|
|
test1();
|
|
test2();
|
|
test3();
|
|
test4();
|
|
test5();
|
|
test6();
|
|
test7();
|
|
test8();
|
|
}
|
|
})();
|