Skip to content

Commit 743d636

Browse files
committed
more migrations
1 parent f5d2d8c commit 743d636

17 files changed

+234
-32
lines changed

packages/@rescript/runtime/Js_null.resi

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@
2525
/*** Provides functionality for dealing with the `Js.null<'a>` type */
2626

2727
@deprecated({
28-
reason: "Use `null` directly instead.",
29-
migrate: %replace.type(: null),
28+
reason: "Use `Null.t` instead.",
29+
migrate: %replace.type(: Null.t),
3030
})
3131
@unboxed
3232
type t<+'a> = Primitive_js_extern.null<'a> = Value('a) | @as(null) Null

packages/@rescript/runtime/Js_null_undefined.resi

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ Contains functionality for dealing with values that can be both `null` and `unde
2727
*/
2828

2929
@deprecated({
30-
reason: "Use `nullable` directly instead.",
31-
migrate: %replace.type(: nullable),
30+
reason: "Use `Nullable.t` instead.",
31+
migrate: %replace.type(: Nullable.t),
3232
})
3333
@unboxed
3434
type t<+'a> = Primitive_js_extern.nullable<'a> =

packages/@rescript/runtime/Pervasives.res

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,10 @@ result == "Caught exception: Out of milk"
2222
*/
2323
external throw: exn => 'a = "%raise"
2424

25-
@deprecated(
26-
"`raise` has been renamed to `throw` to align with JavaScript vocabulary. Please use `throw` instead"
27-
)
25+
@deprecated({
26+
reason: "`raise` has been renamed to `throw` to align with JavaScript vocabulary. Please use `throw` instead",
27+
migrate: throw(),
28+
})
2829
external raise: exn => 'a = "%raise"
2930

3031
@deprecated("Use custom exception instead")

packages/@rescript/runtime/Stdlib_Error.resi

Lines changed: 79 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,16 @@ See [`Error`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/
55
*/
66

77
/** Represents a JavaScript exception. */
8-
@deprecated("Use `JsError.t` instead")
8+
@deprecated({
9+
reason: "Use `JsError.t` instead",
10+
migrate: %replace.type(: JsError.t),
11+
})
912
type t = Stdlib_Exn.t
1013

11-
@deprecated("Use `JsExn.fromException` instead")
14+
@deprecated({
15+
reason: "Use `JsExn.fromException` instead",
16+
migrate: JsExn.fromException(),
17+
})
1218
let fromException: exn => option<t>
1319

1420
/**
@@ -35,7 +41,11 @@ let error = Error.make("error")
3541
Console.log(error->Error.stack) // Logs `stack` if it exists on `someError`
3642
```
3743
*/
38-
@deprecated("Use `JsError.stack` instead") @get
44+
@deprecated({
45+
reason: "Use `JsError.stack` instead",
46+
migrate: JsError.stack(),
47+
})
48+
@get
3949
external stack: t => option<string> = "stack"
4050

4151
/**
@@ -49,7 +59,11 @@ let error = Error.SyntaxError.make("Some message here")
4959
Console.log(error->Error.message) // Logs "Some message here" to the console
5060
```
5161
*/
52-
@deprecated("Use `JsError.message` instead") @get
62+
@deprecated({
63+
reason: "Use `JsError.message` instead",
64+
migrate: JsError.message(),
65+
})
66+
@get
5367
external message: t => option<string> = "message"
5468

5569
/**
@@ -63,15 +77,23 @@ let error = Error.SyntaxError.make("Some message here")
6377
Console.log(error->Error.name) // Logs "SyntaxError" to the console
6478
```
6579
*/
66-
@deprecated("Use `JsError.name` instead") @get
80+
@deprecated({
81+
reason: "Use `JsError.name` instead",
82+
migrate: JsError.name(),
83+
})
84+
@get
6785
external name: t => option<string> = "name"
6886

6987
/**
7088
`fileName(error)` retrieves the `fileName` property of the error, if it exists.
7189
7290
See [`Error.prototype.fileName`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/fileName) on MDN.
7391
*/
74-
@deprecated("Use `JsError.fileName` instead") @get
92+
@deprecated({
93+
reason: "Use `JsError.fileName` instead",
94+
migrate: JsError.fileName(),
95+
})
96+
@get
7597
external fileName: t => option<string> = "fileName"
7698

7799
/**
@@ -86,7 +108,11 @@ Console.log(error->Error.message) // Logs "Some message here" to the console
86108
Console.log(error->Error.name) // Logs "Error" to the console, because this is a regular error
87109
```
88110
*/
89-
@deprecated("Use `JsError.make` instead") @new
111+
@deprecated({
112+
reason: "Use `JsError.make` instead",
113+
migrate: JsError.make(),
114+
})
115+
@new
90116
external make: string => t = "Error"
91117

92118
module EvalError: {
@@ -95,7 +121,11 @@ module EvalError: {
95121
96122
See [`EvalError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/EvalError) on MDN.
97123
*/
98-
@deprecated("Use `JsError.EvalError.make` instead") @new
124+
@deprecated({
125+
reason: "Use `JsError.EvalError.make` instead",
126+
migrate: JsError.EvalError.make(),
127+
})
128+
@new
99129
external make: string => t = "EvalError"
100130
}
101131
module RangeError: {
@@ -104,7 +134,11 @@ module RangeError: {
104134
105135
See [`RangeError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError) on MDN.
106136
*/
107-
@deprecated("Use `JsError.RangeError.make` instead") @new
137+
@deprecated({
138+
reason: "Use `JsError.RangeError.make` instead",
139+
migrate: JsError.RangeError.make(),
140+
})
141+
@new
108142
external make: string => t = "RangeError"
109143
}
110144
module ReferenceError: {
@@ -113,7 +147,11 @@ module ReferenceError: {
113147
114148
See [`ReferenceError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError) on MDN.
115149
*/
116-
@deprecated("Use `JsError.ReferenceError.make` instead") @new
150+
@deprecated({
151+
reason: "Use `JsError.ReferenceError.make` instead",
152+
migrate: JsError.ReferenceError.make(),
153+
})
154+
@new
117155
external make: string => t = "ReferenceError"
118156
}
119157
module SyntaxError: {
@@ -122,7 +160,11 @@ module SyntaxError: {
122160
123161
See [`SyntaxError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError) on MDN.
124162
*/
125-
@deprecated("Use `JsError.SyntaxError.make` instead") @new
163+
@deprecated({
164+
reason: "Use `JsError.SyntaxError.make` instead",
165+
migrate: JsError.SyntaxError.make(),
166+
})
167+
@new
126168
external make: string => t = "SyntaxError"
127169
}
128170
module TypeError: {
@@ -131,7 +173,11 @@ module TypeError: {
131173
132174
See [`TypeError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError) on MDN.
133175
*/
134-
@deprecated("Use `JsError.TypeError.make` instead") @new
176+
@deprecated({
177+
reason: "Use `JsError.TypeError.make` instead",
178+
migrate: JsError.TypeError.make(),
179+
})
180+
@new
135181
external make: string => t = "TypeError"
136182
}
137183
module URIError: {
@@ -140,7 +186,11 @@ module URIError: {
140186
141187
See [`URIError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIError) on MDN.
142188
*/
143-
@deprecated("Use `JsError.URIError.make` instead") @new
189+
@deprecated({
190+
reason: "Use `JsError.URIError.make` instead",
191+
migrate: JsError.URIError.make(),
192+
})
193+
@new
144194
external make: string => t = "URIError"
145195
}
146196

@@ -158,9 +208,10 @@ if 5 > 10 {
158208
}
159209
```
160210
*/
161-
@deprecated(
162-
"`raise` has been renamed to `throw` to align with JavaScript vocabulary. Please use `JsError.throw` instead"
163-
)
211+
@deprecated({
212+
reason: "`raise` has been renamed to `throw` to align with JavaScript vocabulary. Please use `JsError.throw` instead",
213+
migrate: JsError.throw(),
214+
})
164215
external raise: t => 'a = "%raise"
165216

166217
/**
@@ -178,7 +229,10 @@ if 5 > 10 {
178229
}
179230
```
180231
*/
181-
@deprecated("Use `JsError.throw` instead")
232+
@deprecated({
233+
reason: "Use `JsError.throw` instead",
234+
migrate: JsError.throw(),
235+
})
182236
external throw: t => 'a = "%raise"
183237

184238
/**
@@ -203,7 +257,10 @@ try {
203257
}
204258
```
205259
*/
206-
@deprecated("Use `JsError.panic` instead")
260+
@deprecated({
261+
reason: "Use `JsError.panic` instead",
262+
migrate: JsError.panic(),
263+
})
207264
let panic: string => 'a
208265

209266
/**
@@ -212,5 +269,8 @@ let panic: string => 'a
212269
This helper is useful when you want to discard a value (for example, the result of an operation with side effects)
213270
without having to store or process it further.
214271
*/
215-
@deprecated("Use `JsError.ignore` instead")
272+
@deprecated({
273+
reason: "Use `JsError.ignore` instead",
274+
migrate: JsError.ignore(),
275+
})
216276
external ignore: t => unit = "%ignore"
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
// Use deprecated Error APIs to validate migration to JsError/JsExn
2+
3+
external someExn: exn = "whatever"
4+
5+
let fromExn1 = someExn->JsExn.fromException
6+
let fromExn2 = JsExn.fromException(someExn)
7+
8+
let err = JsError.make("Some message here")
9+
10+
let stack1 = err->JsError.stack
11+
let stack2 = JsError.stack(err)
12+
13+
let message1 = err->JsError.message
14+
let message2 = JsError.message(err)
15+
16+
let name1 = err->JsError.name
17+
let name2 = JsError.name(err)
18+
19+
let fileName1 = err->JsError.fileName
20+
let fileName2 = JsError.fileName(err)
21+
22+
// Type alias migration
23+
let errT: JsError.t = JsError.make("Another message")
24+
25+
// Sub-error constructors
26+
let evalErr = JsError.EvalError.make("eval error")
27+
let rangeErr = JsError.RangeError.make("range error")
28+
let refErr = JsError.ReferenceError.make("reference error")
29+
let synErr = JsError.SyntaxError.make("syntax error")
30+
let typeErr = JsError.TypeError.make("type error")
31+
let uriErr = JsError.URIError.make("uri error")
32+
33+
let ignore1 = err->JsError.ignore
34+
let ignore2 = JsError.ignore(err)
35+

tests/tools_tests/src/expected/StdlibMigration_Null.res.expected

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,5 @@ let test2 = Null.null === Null.null
3232
let test3 = Null.make(5)->Null.map(v => v)->Null.equal(Null, (a, b) => a === b)
3333

3434
// Type alias migration
35-
let nullT: null<int> = Null.make(1)
35+
let nullT: Null.t<int> = Null.make(1)
3636

tests/tools_tests/src/expected/StdlibMigration_Nullable.res.expected

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,11 @@ let toOption2 = Nullable.toOption(Nullable.make(3))
2525
let to_opt1 = Nullable.make(4)->Nullable.toOption
2626
let to_opt2 = Nullable.toOption(Nullable.make(4))
2727

28+
let optArrayOfNullableToOptArrayOfOpt: option<array<Nullable.t<'a>>> => option<
29+
array<option<'a>>,
30+
> = x =>
31+
switch x {
32+
| None => None
33+
| Some(arr) => Some(arr->Belt.Array.map(Nullable.toOption))
34+
}
35+
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
throw(Failure("test"))
2+
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
// Use deprecated Error APIs to validate migration to JsError/JsExn
2+
3+
external someExn: exn = "whatever"
4+
5+
let fromExn1 = someExn->Error.fromException
6+
let fromExn2 = Error.fromException(someExn)
7+
8+
let err = Error.make("Some message here")
9+
10+
let stack1 = err->Error.stack
11+
let stack2 = Error.stack(err)
12+
13+
let message1 = err->Error.message
14+
let message2 = Error.message(err)
15+
16+
let name1 = err->Error.name
17+
let name2 = Error.name(err)
18+
19+
let fileName1 = err->Error.fileName
20+
let fileName2 = Error.fileName(err)
21+
22+
// Type alias migration
23+
let errT: Error.t = Error.make("Another message")
24+
25+
// Sub-error constructors
26+
let evalErr = Error.EvalError.make("eval error")
27+
let rangeErr = Error.RangeError.make("range error")
28+
let refErr = Error.ReferenceError.make("reference error")
29+
let synErr = Error.SyntaxError.make("syntax error")
30+
let typeErr = Error.TypeError.make("type error")
31+
let uriErr = Error.URIError.make("uri error")
32+
33+
let ignore1 = err->Error.ignore
34+
let ignore2 = Error.ignore(err)

tests/tools_tests/src/migrate/StdlibMigration_Nullable.res

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,11 @@ let toOption2 = Js.Null_undefined.toOption(Js.Null_undefined.return(3))
2424

2525
let to_opt1 = Js.Null_undefined.return(4)->Js.Null_undefined.to_opt
2626
let to_opt2 = Js.Null_undefined.to_opt(Js.Null_undefined.return(4))
27+
28+
let optArrayOfNullableToOptArrayOfOpt: option<array<Js.Nullable.t<'a>>> => option<
29+
array<option<'a>>,
30+
> = x =>
31+
switch x {
32+
| None => None
33+
| Some(arr) => Some(arr->Belt.Array.map(Js.Nullable.toOption))
34+
}

0 commit comments

Comments
 (0)