@@ -6,89 +6,39 @@ type t = bigint
6
6
@val external asIntN : (~width : int , bigint ) => bigint = "BigInt.asIntN"
7
7
@val external asUintN : (~width : int , bigint ) => bigint = "BigInt.asUintN"
8
8
9
+ @val external fromString : string => bigint = "BigInt"
10
+
9
11
@val
10
12
/**
11
13
Parses the given `string` into a `bigint` using JavaScript semantics. Return the
12
- number as a `bigint` if successfully parsed. Throws a syntax exception otherwise.
14
+ number as a `bigint` if successfully parsed. Uncaught syntax exception otherwise.
13
15
14
16
## Examples
15
17
16
18
```rescript
17
- BigInt.fromStringOrThrow ("123")->assertEqual(123n)
19
+ BigInt.fromStringExn ("123")->assertEqual(123n)
18
20
19
- BigInt.fromStringOrThrow ("")->assertEqual(0n)
21
+ BigInt.fromStringExn ("")->assertEqual(0n)
20
22
21
- BigInt.fromStringOrThrow ("0x11")->assertEqual(17n)
23
+ BigInt.fromStringExn ("0x11")->assertEqual(17n)
22
24
23
- BigInt.fromStringOrThrow ("0b11")->assertEqual(3n)
25
+ BigInt.fromStringExn ("0b11")->assertEqual(3n)
24
26
25
- BigInt.fromStringOrThrow ("0o11")->assertEqual(9n)
27
+ BigInt.fromStringExn ("0o11")->assertEqual(9n)
26
28
27
29
/* catch exception */
28
- switch BigInt.fromStringOrThrow ("a") {
30
+ switch BigInt.fromStringExn ("a") {
29
31
| exception JsExn(_error) => assert(true)
30
32
| _bigInt => assert(false)
31
33
}
32
34
```
33
35
*/
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
63
36
external fromStringExn : string => bigint = "BigInt"
64
-
65
37
@val external fromInt : int => 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"
38
+ @val external fromFloat : float => bigint = "BigInt"
89
39
90
40
let fromFloat = (value : float ) => {
91
- try Some (fromFloatOrThrow (value )) catch {
41
+ try Some (fromFloat (value )) catch {
92
42
| _ => None
93
43
}
94
44
}
0 commit comments