@@ -6,39 +6,89 @@ type t = bigint
66@val  external  asIntN : (~width : int , bigint ) =>  bigint  =  "BigInt.asIntN" 
77@val  external  asUintN : (~width : int , bigint ) =>  bigint  =  "BigInt.asUintN" 
88
9- @val  external  fromString : string  =>  bigint  =  "BigInt" 
10- 
119@val 
1210/** 
1311Parses the given `string` into a `bigint` using JavaScript semantics. Return the 
14- number as a `bigint` if successfully parsed. Uncaught  syntax exception otherwise. 
12+ number as a `bigint` if successfully parsed. Throws a  syntax exception otherwise. 
1513
1614## Examples 
1715
1816```rescript 
19- BigInt.fromStringExn ("123")->assertEqual(123n) 
17+ BigInt.fromStringOrThrow ("123")->assertEqual(123n) 
2018
21- BigInt.fromStringExn ("")->assertEqual(0n) 
19+ BigInt.fromStringOrThrow ("")->assertEqual(0n) 
2220
23- BigInt.fromStringExn ("0x11")->assertEqual(17n) 
21+ BigInt.fromStringOrThrow ("0x11")->assertEqual(17n) 
2422
25- BigInt.fromStringExn ("0b11")->assertEqual(3n) 
23+ BigInt.fromStringOrThrow ("0b11")->assertEqual(3n) 
2624
27- BigInt.fromStringExn ("0o11")->assertEqual(9n) 
25+ BigInt.fromStringOrThrow ("0o11")->assertEqual(9n) 
2826
2927/* catch exception */ 
30- switch BigInt.fromStringExn ("a") { 
28+ switch BigInt.fromStringOrThrow ("a") { 
3129| exception JsExn(_error) => assert(true) 
3230| _bigInt => assert(false) 
3331} 
3432``` 
3533*/ 
34+ external  fromStringOrThrow : string  =>  bigint  =  "BigInt" 
35+ 
36+ /** 
37+ Parses the given `string` into a `bigint` using JavaScript semantics. Returns  
38+ `Some(bigint)` if the string can be parsed, `None` otherwise. 
39+ 
40+ ## Examples 
41+ 
42+ ```rescript 
43+ BigInt.fromString("123")->assertEqual(Some(123n)) 
44+ 
45+ BigInt.fromString("")->assertEqual(Some(0n)) 
46+ 
47+ BigInt.fromString("0x11")->assertEqual(Some(17n)) 
48+ 
49+ BigInt.fromString("0b11")->assertEqual(Some(3n)) 
50+ 
51+ BigInt.fromString("0o11")->assertEqual(Some(9n)) 
52+ 
53+ BigInt.fromString("invalid")->assertEqual(None) 
54+ ``` 
55+ */ 
56+ let  fromString  =  (value : string ) =>  {
57+   try  Some (fromStringOrThrow (value )) catch  {
58+   | _  =>  None 
59+   }
60+ }
61+ 
62+ @deprecated ("Use `fromStringOrThrow` instead" ) @val 
3663external  fromStringExn : string  =>  bigint  =  "BigInt" 
64+ 
3765@val  external  fromInt : int  =>  bigint  =  "BigInt" 
38- @val  external  fromFloat : float  =>  bigint  =  "BigInt" 
66+ 
67+ @val 
68+ /** 
69+ Converts a `float` to a `bigint` using JavaScript semantics.  
70+ Throws an exception if the float is not an integer or is infinite/NaN. 
71+ 
72+ ## Examples 
73+ 
74+ ```rescript 
75+ BigInt.fromFloatOrThrow(123.0)->assertEqual(123n) 
76+ 
77+ BigInt.fromFloatOrThrow(0.0)->assertEqual(0n) 
78+ 
79+ BigInt.fromFloatOrThrow(-456.0)->assertEqual(-456n) 
80+ 
81+ /* This will throw an exception */ 
82+ switch BigInt.fromFloatOrThrow(123.5) { 
83+ | exception JsExn(_error) => assert(true) 
84+ | _bigInt => assert(false) 
85+ } 
86+ ``` 
87+ */ 
88+ external  fromFloatOrThrow : float  =>  bigint  =  "BigInt" 
3989
4090let  fromFloat  =  (value : float ) =>  {
41-   try  Some (fromFloat (value )) catch  {
91+   try  Some (fromFloatOrThrow (value )) catch  {
4292  | _  =>  None 
4393  }
4494}
0 commit comments