tor-browser

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

disposal-during-throw-generators.js (945B)


      1 // |jit-test| skip-if: !getBuildConfiguration("explicit-resource-management"); --enable-explicit-resource-management
      2 
      3 load(libdir + "asserts.js");
      4 
      5 const values = [];
      6 
      7 function* gen() {
      8  using d = {
      9    value: "d",
     10    [Symbol.dispose]() {
     11      values.push(this.value);
     12    }
     13  }
     14  yield "a";
     15  yield "b";
     16  using c = {
     17    value: "c",
     18    [Symbol.dispose]() {
     19      values.push(this.value);
     20    }
     21  }
     22  throw new Error("err");
     23 }
     24 
     25 assertThrowsInstanceOf(() => {
     26  let x = gen();
     27  values.push(x.next().value);
     28  values.push(x.next().value);
     29  x.next();
     30 }, Error);
     31 assertArrayEq(values, ["a", "b", "c", "d"]);
     32 
     33 const values2 = [];
     34 function* gen2() {
     35  using c = {
     36    value: "c",
     37    [Symbol.dispose]() {
     38      values2.push(this.value);
     39    }
     40  }
     41  yield "a";
     42  yield "b";
     43  return;
     44 }
     45 
     46 assertThrowsInstanceOf(() => {
     47  let x = gen2();
     48  values2.push(x.next().value);
     49  x.throw(new Error("err"));
     50 }, Error);
     51 
     52 assertArrayEq(values2, ["a", "c"]);