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");