tor-browser

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

destructuring-rest-identifiers.js (1101B)


      1 load(libdir + 'asserts.js');
      2 load(libdir + 'eqArrayHelper.js');
      3 
      4 var reserved = [
      5  'break',
      6  'do',
      7  'in',
      8  'typeof',
      9  'case',
     10  'else',
     11  'instanceof',
     12  'var',
     13  'catch',
     14  'export',
     15  'new',
     16  'void',
     17  'class',
     18  'extends',
     19  'return',
     20  'while',
     21  'const',
     22  'finally',
     23  'super',
     24  'with',
     25  'continue',
     26  'for',
     27  'switch',
     28  'debugger',
     29  'function',
     30  'this',
     31  'delete',
     32  'import',
     33  'try',
     34  'enum',
     35  'null',
     36  'true',
     37  'false'
     38 ];
     39 reserved.forEach(ident => {
     40  assertThrowsInstanceOf(() => new Function('var [...' + ident + '] = []'), SyntaxError);
     41 });
     42 
     43 var strictIdentifiers = [
     44  'yield',
     45  'let',
     46  'eval',
     47  'arguments',
     48  'implements',
     49  'interface',
     50  'package',
     51  'private',
     52  'protected',
     53  'public',
     54  'static'
     55 ];
     56 
     57 strictIdentifiers.forEach(ident =>
     58  assertThrowsInstanceOf(() =>
     59    new Function('"use strict"; [...' + ident + '] = []'), SyntaxError));
     60 
     61 var globalEval = eval;
     62 strictIdentifiers.forEach(ident => {
     63  globalEval(ident + ' = null');
     64  assertEqArray(new Function('input', '[, ...' + ident + '] = input;' +
     65    'return ' + ident
     66  )([1, 2, 3]), [2, 3]);
     67 });