blob: d6b8a893d59e8c8dfadd8e8e0ae3afa7933f5f84 [file] [log] [blame] [edit]
//@ requireOptions("--useExplicitResourceManagement=true")
function shouldBe(actual, expected) {
if (actual !== expected)
throw new Error(`Expected ${expected} but got ${actual}`);
}
{
let disposed = false;
{
using x = { [Symbol.dispose]() { disposed = true; } };
shouldBe(disposed, false);
}
shouldBe(disposed, true);
}
{
{
using x = null;
using y = undefined;
}
}
{
let order = [];
{
using a = { [Symbol.dispose]() { order.push("a"); } };
using b = { [Symbol.dispose]() { order.push("b"); } };
using c = { [Symbol.dispose]() { order.push("c"); } };
}
shouldBe(order.join(","), "c,b,a");
}
{
let disposed = false;
function test() {
using x = { [Symbol.dispose]() { disposed = true; } };
shouldBe(disposed, false);
}
test();
shouldBe(disposed, true);
}
{
let value;
{
using x = { val: 42, [Symbol.dispose]() {} };
value = x.val;
}
shouldBe(value, 42);
}
{
let disposed = false;
try {
using x = { [Symbol.dispose]() { disposed = true; } };
throw new Error("test");
} catch (e) {
shouldBe(e.message, "test");
}
shouldBe(disposed, true);
}