tor-browser

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

rest-parameter-arguments.js (3165B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2 * License, v. 2.0. If a copy of the MPL was not distributed with this
      3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 // Ensure the |arguments| object works as expected when a destructuring rest
      6 // parameter is present.
      7 
      8 // |arguments.length| with destructuring rest array.
      9 function argsLengthEmptyRestArray(...[]) {
     10    return arguments.length;
     11 }
     12 assertEq(argsLengthEmptyRestArray(), 0);
     13 assertEq(argsLengthEmptyRestArray(10), 1);
     14 assertEq(argsLengthEmptyRestArray(10, 20), 2);
     15 
     16 function argsLengthRestArray(...[a]) {
     17    return arguments.length;
     18 }
     19 assertEq(argsLengthRestArray(), 0);
     20 assertEq(argsLengthRestArray(10), 1);
     21 assertEq(argsLengthRestArray(10, 20), 2);
     22 
     23 function argsLengthRestArrayWithDefault(...[a = 0]) {
     24    return arguments.length;
     25 }
     26 assertEq(argsLengthRestArrayWithDefault(), 0);
     27 assertEq(argsLengthRestArrayWithDefault(10), 1);
     28 assertEq(argsLengthRestArrayWithDefault(10, 20), 2);
     29 
     30 
     31 // |arguments.length| with destructuring rest object.
     32 function argsLengthEmptyRestObject(...{}) {
     33    return arguments.length;
     34 }
     35 assertEq(argsLengthEmptyRestObject(), 0);
     36 assertEq(argsLengthEmptyRestObject(10), 1);
     37 assertEq(argsLengthEmptyRestObject(10, 20), 2);
     38 
     39 function argsLengthRestObject(...{a}) {
     40    return arguments.length;
     41 }
     42 assertEq(argsLengthRestObject(), 0);
     43 assertEq(argsLengthRestObject(10), 1);
     44 assertEq(argsLengthRestObject(10, 20), 2);
     45 
     46 function argsLengthRestObjectWithDefault(...{a = 0}) {
     47    return arguments.length;
     48 }
     49 assertEq(argsLengthRestObjectWithDefault(), 0);
     50 assertEq(argsLengthRestObjectWithDefault(10), 1);
     51 assertEq(argsLengthRestObjectWithDefault(10, 20), 2);
     52 
     53 
     54 // |arguments| access with destructuring rest array.
     55 function argsAccessEmptyRestArray(...[]) {
     56    return arguments[0];
     57 }
     58 assertEq(argsAccessEmptyRestArray(), undefined);
     59 assertEq(argsAccessEmptyRestArray(10), 10);
     60 assertEq(argsAccessEmptyRestArray(10, 20), 10);
     61 
     62 function argsAccessRestArray(...[a]) {
     63    return arguments[0];
     64 }
     65 assertEq(argsAccessRestArray(), undefined);
     66 assertEq(argsAccessRestArray(10), 10);
     67 assertEq(argsAccessRestArray(10, 20), 10);
     68 
     69 function argsAccessRestArrayWithDefault(...[a = 0]) {
     70    return arguments[0];
     71 }
     72 assertEq(argsAccessRestArrayWithDefault(), undefined);
     73 assertEq(argsAccessRestArrayWithDefault(10), 10);
     74 assertEq(argsAccessRestArrayWithDefault(10, 20), 10);
     75 
     76 
     77 // |arguments| access with destructuring rest object.
     78 function argsAccessEmptyRestObject(...{}) {
     79    return arguments[0];
     80 }
     81 assertEq(argsAccessEmptyRestObject(), undefined);
     82 assertEq(argsAccessEmptyRestObject(10), 10);
     83 assertEq(argsAccessEmptyRestObject(10, 20), 10);
     84 
     85 function argsAccessRestObject(...{a}) {
     86    return arguments[0];
     87 }
     88 assertEq(argsAccessRestObject(), undefined);
     89 assertEq(argsAccessRestObject(10), 10);
     90 assertEq(argsAccessRestObject(10, 20), 10);
     91 
     92 function argsAccessRestObjectWithDefault(...{a = 0}) {
     93    return arguments[0];
     94 }
     95 assertEq(argsAccessRestObjectWithDefault(), undefined);
     96 assertEq(argsAccessRestObjectWithDefault(10), 10);
     97 assertEq(argsAccessRestObjectWithDefault(10, 20), 10);
     98 
     99 
    100 if (typeof reportCompare === "function")
    101    reportCompare(0, 0);