tor-browser

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

await-using-with-for-of.js (1561B)


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