// Copyright (C) 2017 The V8 project authors. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- description: BigInt throws a RangeError if value is Infinity esid: sec-bigint-constructor info: | BigInt ( value ) ... 2. Let prim be ? ToPrimitive(value, hint Number). 3. If Type(prim) is Number, return ? NumberToBigInt(prim). ... NumberToBigInt ( number ) ... 2. If IsSafeInteger(number) is false, throw a RangeError exception. ... IsSafeInteger ( number ) ... 2. If number is NaN, +∞, or -∞, return false. features: [BigInt] ---*/ assert.throws(RangeError, function() { BigInt(-Infinity); }); var calls = 0; var obj = { valueOf: function() { calls++; return -Infinity; } } assert.throws(RangeError, function() { BigInt(obj); }); assert.sameValue(calls, 1, "it fails after fetching the primitive value");