function testAddInconvertibleObjectAny() { var count = 0; function toString() { ++count; if (count == 95) return {}; return "" + count; } var o = {valueOf: undefined, toString: toString}; var threw = false; try { for (var i = 0; i < 100; i++) var q = o + 5; } catch (e) { threw = true; if (i !== 94) return "expected i === 94, got " + i; if (q !== "945") return "expected q === '945', got " + q + " (type " + typeof q + ")"; if (count !== 95) return "expected count === 95, got " + count; } if (!threw) return "expected throw with o + 5"; return "pass"; } assertEq(testAddInconvertibleObjectAny(), "pass");