tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

await-using-in-loop.js (1422B)


      1 // |jit-test| skip-if: !getBuildConfiguration("explicit-resource-management"); --enable-explicit-resource-management
      2 
      3 load(libdir + "asserts.js");
      4 
      5 const disposedInLoop = [];
      6 async function testDisposalsInForLoop() {
      7  await using a = {
      8    [Symbol.asyncDispose]: () => disposedInLoop.push("a")
      9  };
     10 
     11  for (let i = 0; i < 3; i++) {
     12    await using b = {
     13      [Symbol.asyncDispose]: () => disposedInLoop.push(i)
     14    };
     15  }
     16 
     17  await using c = {
     18    [Symbol.asyncDispose]: () => disposedInLoop.push("c")
     19  };
     20 }
     21 testDisposalsInForLoop();
     22 drainJobQueue();
     23 assertArrayEq(disposedInLoop, [0, 1, 2, "c", "a"]);
     24 
     25 const disposedInForOfLoop = [];
     26 async function testDisposalsInForOfLoop() {
     27  await using a = {
     28    [Symbol.asyncDispose]: () => disposedInForOfLoop.push("a")
     29  };
     30 
     31  for (let i of [0, 1]) {
     32    await using x = {
     33      [Symbol.asyncDispose]: () => {
     34        disposedInForOfLoop.push(i);
     35      }
     36    };
     37  }
     38 }
     39 testDisposalsInForOfLoop();
     40 drainJobQueue();
     41 assertArrayEq(disposedInForOfLoop, [0, 1, "a"]);
     42 
     43 const disposedInForInLoop = [];
     44 async function testDisposalsInForInLoop() {
     45  await using a = {
     46    [Symbol.asyncDispose]: () => disposedInForInLoop.push("a")
     47  };
     48 
     49  for (let i in { 0: 0, 1: 1}) {
     50    await using x = {
     51      [Symbol.asyncDispose]: () => {
     52        disposedInForInLoop.push(i);
     53      }
     54    };
     55  }
     56 }
     57 testDisposalsInForInLoop();
     58 drainJobQueue();
     59 assertArrayEq(disposedInForInLoop, ["0", "1", "a"]);