disposable-stack-ccw-ops.js (878B)
1 // |jit-test| skip-if: !getBuildConfiguration("explicit-resource-management"); --enable-explicit-resource-management 2 3 load(libdir + "asserts.js"); 4 5 { 6 const g = newGlobal({ newCompartment: true }); 7 const d = g.eval(` 8 globalThis.disposed = []; 9 const d = new DisposableStack(); 10 d.use({ [Symbol.dispose]: () => globalThis.disposed.push(1) }); 11 d; 12 `); 13 { 14 DisposableStack.prototype.dispose.call(d); 15 assertEq(d.disposed, true); 16 assertArrayEq(g.eval("globalThis.disposed"), [1]); 17 } 18 } 19 20 { 21 { 22 const g = newGlobal({ newCompartment: true }); 23 const d = g.eval(` 24 globalThis.disposed = []; 25 const d = new DisposableStack(); 26 d.use({ [Symbol.dispose]: () => globalThis.disposed.push(1) }); 27 d; 28 `); 29 nukeAllCCWs(); 30 { 31 assertThrowsInstanceOf(() => DisposableStack.prototype.dispose.call(d), TypeError); 32 } 33 } 34 }