testBitOrInconvertibleObjectAny.js (647B)
1 function testBitOrInconvertibleObjectAny() 2 { 3 var count = 0; 4 function toString() { ++count; if (count == 95) return {}; return count; } 5 var o = {valueOf: undefined, toString: toString}; 6 7 var threw = false; 8 try 9 { 10 for (var i = 0; i < 100; i++) 11 var q = o | 1; 12 } 13 catch (e) 14 { 15 threw = true; 16 if (i !== 94) 17 return "expected i === 94, got " + i; 18 if (q !== 95) 19 return "expected q === 95, got " + q; 20 if (count !== 95) 21 return "expected count === 95, got " + count; 22 } 23 if (!threw) 24 return "expected throw with o | 2"; 25 26 return "pass"; 27 } 28 assertEq(testBitOrInconvertibleObjectAny(), "pass");