tor-browser

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

bug-889628.js (746B)


      1 // Destructuring assignment to eval or arguments in destructuring is a SyntaxError
      2 // in strict mode
      3 
      4 load(libdir + "asserts.js");
      5 
      6 var patterns = [
      7    "[_]",
      8    "[a, b, _]",
      9    "[[_]]",
     10    "[[], [{}, [_]]]",
     11    "{x:_}",
     12    "{x:y, z:_}",
     13    "{0:_}",
     14    "{_}",
     15    "[..._]"
     16 ];
     17 
     18 for (var pattern of patterns) {
     19    var stmt = pattern + " = obj";
     20    if (stmt[0] == "{")
     21        stmt = "(" + stmt + ")";
     22    stmt += ";"
     23 
     24    // stmt is a legal statement...
     25    Function(stmt);
     26 
     27    // ...but not if you replace _ with one of these two names.
     28    for (var name of ["eval", "arguments"]) {
     29        var s = stmt.replace("_", name);
     30        Function(s);
     31        assertThrowsInstanceOf(() => Function("'use strict'; " + s), SyntaxError);
     32    }
     33 }