55 lines
495 B
JavaScript
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);
|
|
}
|
|
|