tor-browser

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

inc-dec-functioncall.js (1960B)


      1 /*
      2 * Any copyright is dedicated to the Public Domain.
      3 * http://creativecommons.org/licenses/publicdomain/
      4 */
      5 
      6 // SKIP test262 export
      7 // https://github.com/tc39/ecma262/pull/2193
      8 
      9 //-----------------------------------------------------------------------------
     10 var BUGNUMBER = 609756;
     11 var summary =
     12  "Perform ToNumber on the result of the |fun()| in |fun()++| before " +
     13  "throwing";
     14 
     15 print(BUGNUMBER + ": " + summary);
     16 
     17 /**************
     18 * BEGIN TEST *
     19 **************/
     20 
     21 var hadSideEffect;
     22 
     23 function f()
     24 {
     25  return { valueOf: function() { hadSideEffect = true; return 0; } };
     26 }
     27 
     28 hadSideEffect = false;
     29 assertThrowsInstanceOf(function() { f()++; }, ReferenceError);
     30 assertEq(hadSideEffect, false);
     31 
     32 hadSideEffect = false;
     33 assertThrowsInstanceOf(function() {
     34  for (var i = 0; i < 20; i++)
     35  {
     36    if (i > 18)
     37      f()++;
     38  }
     39 }, ReferenceError);
     40 assertEq(hadSideEffect, false);
     41 
     42 
     43 hadSideEffect = false;
     44 assertThrowsInstanceOf(function() { f()--; }, ReferenceError);
     45 assertEq(hadSideEffect, false);
     46 
     47 hadSideEffect = false;
     48 assertThrowsInstanceOf(function() {
     49  for (var i = 0; i < 20; i++)
     50  {
     51    if (i > 18)
     52      f()--;
     53  }
     54 }, ReferenceError);
     55 assertEq(hadSideEffect, false);
     56 
     57 
     58 hadSideEffect = false;
     59 assertThrowsInstanceOf(function() { ++f(); }, ReferenceError);
     60 assertEq(hadSideEffect, false);
     61 
     62 hadSideEffect = false;
     63 assertThrowsInstanceOf(function() {
     64  for (var i = 0; i < 20; i++)
     65  {
     66    if (i > 18)
     67      ++f();
     68  }
     69 }, ReferenceError);
     70 assertEq(hadSideEffect, false);
     71 
     72 
     73 hadSideEffect = false;
     74 assertThrowsInstanceOf(function() { --f(); }, ReferenceError);
     75 assertEq(hadSideEffect, false);
     76 
     77 hadSideEffect = false;
     78 assertThrowsInstanceOf(function() {
     79  for (var i = 0; i < 20; i++)
     80  {
     81    if (i > 18)
     82      --f();
     83  }
     84 }, ReferenceError);
     85 assertEq(hadSideEffect, false);
     86 
     87 
     88 /******************************************************************************/
     89 
     90 if (typeof reportCompare === "function")
     91  reportCompare(true, true);
     92 
     93 print("Tests complete");