blob: c0da2e542d523cf6f608ff45ecc422260754179b [file] [log] [blame] [edit]
//@ requireOptions("--useExplicitResourceManagement=true")
function shouldBe(actual, expected) {
if (actual !== expected)
throw new Error(`Expected ${expected} but got ${actual}`);
}
{
let order = [];
for (let i = 0; i < 3; i++) {
using x = { val: i, [Symbol.dispose]() { order.push("dispose-" + this.val); } };
order.push("use-" + x.val);
}
shouldBe(order.join(","), "use-0,dispose-0,use-1,dispose-1,use-2,dispose-2");
}
{
let order = [];
for (let i = 0; i < 3; i++) {
using x = { val: i, [Symbol.dispose]() { order.push("dispose-" + this.val); } };
if (i === 1) break;
order.push("use-" + x.val);
}
shouldBe(order.join(","), "use-0,dispose-0,dispose-1");
}
{
let order = [];
for (let i = 0; i < 3; i++) {
using x = { val: i, [Symbol.dispose]() { order.push("dispose-" + this.val); } };
if (i === 1) continue;
order.push("use-" + x.val);
}
shouldBe(order.join(","), "use-0,dispose-0,dispose-1,use-2,dispose-2");
}