tor-browser

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

rest-parameter-spread-call-optimization.js (999B)


      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 spread-call optimization doesn't break when a destructuring rest
      6 // parameter is used.
      7 
      8 function spreadTarget() { return arguments.length; }
      9 
     10 function spreadOpt(...[r]){ return spreadTarget(...r); }
     11 assertEq(spreadOpt([]), 0);
     12 assertEq(spreadOpt([10]), 1);
     13 assertEq(spreadOpt([10, 20]), 2);
     14 assertEq(spreadOpt([10, 20, 30]), 3);
     15 
     16 function spreadOpt2(...[...r]){ return spreadTarget(...r); }
     17 assertEq(spreadOpt2(), 0);
     18 assertEq(spreadOpt2(10), 1);
     19 assertEq(spreadOpt2(10, 20), 2);
     20 assertEq(spreadOpt2(10, 20, 30), 3);
     21 
     22 function spreadOpt3(r, ...[]){ return spreadTarget(...r); }
     23 assertEq(spreadOpt3([]), 0);
     24 assertEq(spreadOpt3([10]), 1);
     25 assertEq(spreadOpt3([10, 20]), 2);
     26 assertEq(spreadOpt3([10, 20, 30]), 3);
     27 
     28 if (typeof reportCompare === "function")
     29    reportCompare(0, 0);