tor-browser

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

disposal-during-throw-try-catch.js (988B)


      1 // |jit-test| skip-if: !getBuildConfiguration("explicit-resource-management"); --enable-explicit-resource-management
      2 
      3 load(libdir + "asserts.js");
      4 
      5 let disposed = false;
      6 try {
      7  using x = {
      8    [Symbol.dispose]() {
      9      disposed = true;
     10    }
     11  }
     12  throw new Error("err");
     13 } catch {
     14 }
     15 
     16 assertEq(disposed, true);
     17 
     18 const valuesInTryFinally = [];
     19 try {
     20  using x = {
     21    value: 'x',
     22    [Symbol.dispose]() {
     23      valuesInTryFinally.push(this.value);
     24    }
     25  }
     26  throw new Error("err");
     27 } catch {
     28 } finally {
     29  valuesInTryFinally.push("y");
     30 }
     31 assertArrayEq(valuesInTryFinally, ["x", "y"]);
     32 
     33 const valuesInFinallyThenUsing = [];
     34 function testValuesInFinallyThenUsing() {
     35  using x = {
     36    val: 'x',
     37    [Symbol.dispose]() {
     38      valuesInFinallyThenUsing.push(this.val);
     39    }
     40  }
     41  try {
     42    throw new Error("err");
     43  } finally {
     44    valuesInFinallyThenUsing.push("y");
     45  }
     46 }
     47 assertThrowsInstanceOf(testValuesInFinallyThenUsing, Error);
     48 assertArrayEq(valuesInFinallyThenUsing, ["y", "x"]);