tor-browser

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

destructuring-null-or-undefined-into-computed-property-name.js (895B)


      1 load(libdir + 'asserts.js');
      2 load(libdir + 'iteration.js');
      3 
      4 var outer = "unmodified";
      5 
      6 function f(v)
      7 {
      8  if (v + "")
      9    ({ [(outer = "modified")]: v } = v);
     10 }
     11 
     12 assertEq(outer, "unmodified");
     13 f(true);
     14 assertEq(outer, "modified");
     15 
     16 outer = "unmodified";
     17 f({});
     18 assertEq(outer, "modified");
     19 
     20 outer = "unmodified";
     21 assertThrowsInstanceOf(() => f(null), TypeError);
     22 assertEq(outer, "unmodified");
     23 
     24 assertThrowsInstanceOf(() => f(undefined), TypeError);
     25 assertEq(outer, "unmodified");
     26 
     27 
     28 function g(v)
     29 {
     30  if (v + "")
     31    ({ [{ toString() { outer = "modified"; return 0; } }]: v } = v);
     32 }
     33 
     34 outer = "unmodified";
     35 g(true);
     36 assertEq(outer, "modified");
     37 
     38 outer = "unmodified";
     39 g({});
     40 assertEq(outer, "modified");
     41 
     42 outer = "unmodified";
     43 assertThrowsInstanceOf(() => g(undefined), TypeError);
     44 assertEq(outer, "unmodified");
     45 
     46 assertThrowsInstanceOf(() => g(null), TypeError);
     47 assertEq(outer, "unmodified");