nan-throws-rangeerror.js (901B)
1 // Copyright (C) 2017 Robin Templeton. All rights reserved. 2 // This code is governed by the BSD license found in the LICENSE file. 3 4 /*--- 5 description: BigInt throws a RangeError if value is NaN 6 esid: sec-bigint-constructor 7 info: | 8 BigInt ( value ) 9 10 ... 11 2. Let prim be ? ToPrimitive(value, hint Number). 12 3. If Type(prim) is Number, return ? NumberToBigInt(prim). 13 ... 14 15 NumberToBigInt ( number ) 16 17 ... 18 2. If IsSafeInteger(number) is false, throw a RangeError exception. 19 ... 20 21 IsSafeInteger ( number ) 22 23 ... 24 2. If number is NaN, +∞, or -∞, return false. 25 features: [BigInt] 26 ---*/ 27 28 assert.throws(RangeError, function() { 29 BigInt(NaN); 30 }); 31 32 var calls = 0; 33 var obj = { 34 valueOf: function() { 35 calls++; 36 return NaN; 37 } 38 } 39 assert.throws(RangeError, function() { 40 BigInt(obj); 41 }); 42 assert.sameValue(calls, 1, "it fails after fetching the primitive value"); 43 44 reportCompare(0, 0);