55 lines
495 B
JavaScript

var g, x;
function* f() {
try {
yield 1;
yield 2;
} finally {
x = 42;
}
}
g = f();
x = 0;
for (let i of g) {
break;
}
assert.equal(x, 42);
g = f();
x = 10;
(function () {
for (let i of g) {
return;
}
}());
assert.equal(x, 42);
g = f();
x = 20;
label1:
for (let i of g) {
if (i == 1) {
continue label1;
}
assert.equal(x, 20);
}
g = f();
x = 30;
label2:
label3:
for (let i of g) {
if (i == 1) {
continue label2;
}
assert.equal(x, 30);
}