Source code
Revision control
Copy as Markdown
Other Tools
// |jit-test| skip-if: !getBuildConfiguration("explicit-resource-management"); --enable-explicit-resource-management
load(libdir + "asserts.js");
const disposedInGenerator = [];
function* gen() {
using x = {
value: 1,
[Symbol.dispose]() {
disposedInGenerator.push(42);
}
};
yield x;
}
function testDisposalsInGenerator() {
let iter = gen();
iter.next();
iter.next();
disposedInGenerator.push(43);
}
testDisposalsInGenerator();
assertArrayEq(disposedInGenerator, [42, 43]);
const disposedInGeneratorWithForcedReturn = [];
function* gen2() {
using x = {
value: 1,
[Symbol.dispose]() {
disposedInGeneratorWithForcedReturn.push(42);
}
};
yield 1;
yield 2;
}
function testDisposalsInGeneratorWithForcedReturn() {
const gen = gen2();
gen.next();
gen.return();
disposedInGeneratorWithForcedReturn.push(43);
}
testDisposalsInGeneratorWithForcedReturn();
assertArrayEq(disposedInGeneratorWithForcedReturn, [42, 43]);