Skip to content

Commit f19930d

Browse files
committed
Relax useCallback type to work in ReScript 11 uncurried mode
1 parent 361449a commit f19930d

File tree

2 files changed

+36
-118
lines changed

2 files changed

+36
-118
lines changed

src/React.res

+18-59
Original file line numberDiff line numberDiff line change
@@ -249,53 +249,32 @@ external useMemo6: (@uncurry (unit => 'any), ('a, 'b, 'c, 'd, 'e, 'f)) => 'any =
249249
@module("react")
250250
external useMemo7: (@uncurry (unit => 'any), ('a, 'b, 'c, 'd, 'e, 'f, 'g)) => 'any = "useMemo"
251251

252-
/* This is used as return values */
253-
type callback<'input, 'output> = 'input => 'output
254-
255252
@module("react")
256-
external useCallback: (@uncurry ('input => 'output)) => callback<'input, 'output> = "useCallback"
253+
external useCallback: 'f => 'f = "useCallback"
257254

258255
@module("react")
259-
external useCallback0: (
260-
@uncurry ('input => 'output),
261-
@as(json`[]`) _,
262-
) => callback<'input, 'output> = "useCallback"
256+
external useCallback0: ('f, @as(json`[]`) _) => 'f = "useCallback"
263257

264258
@module("react")
265-
external useCallback1: (@uncurry ('input => 'output), array<'a>) => callback<'input, 'output> =
266-
"useCallback"
259+
external useCallback1: ('f, array<'a>) => 'f = "useCallback"
267260

268261
@module("react")
269-
external useCallback2: (@uncurry ('input => 'output), ('a, 'b)) => callback<'input, 'output> =
270-
"useCallback"
262+
external useCallback2: ('f, ('a, 'b)) => 'f = "useCallback"
271263

272264
@module("react")
273-
external useCallback3: (@uncurry ('input => 'output), ('a, 'b, 'c)) => callback<'input, 'output> =
274-
"useCallback"
265+
external useCallback3: ('f, ('a, 'b, 'c)) => 'f = "useCallback"
275266

276267
@module("react")
277-
external useCallback4: (
278-
@uncurry ('input => 'output),
279-
('a, 'b, 'c, 'd),
280-
) => callback<'input, 'output> = "useCallback"
268+
external useCallback4: ('f, ('a, 'b, 'c, 'd)) => 'f = "useCallback"
281269

282270
@module("react")
283-
external useCallback5: (
284-
@uncurry ('input => 'output),
285-
('a, 'b, 'c, 'd, 'e),
286-
) => callback<'input, 'output> = "useCallback"
271+
external useCallback5: ('f, ('a, 'b, 'c, 'd, 'e)) => 'f = "useCallback"
287272

288273
@module("react")
289-
external useCallback6: (
290-
@uncurry ('input => 'output),
291-
('a, 'b, 'c, 'd, 'e, 'f),
292-
) => callback<'input, 'output> = "useCallback"
274+
external useCallback6: ('f, ('a, 'b, 'c, 'd, 'e, 'f)) => 'f = "useCallback"
293275

294276
@module("react")
295-
external useCallback7: (
296-
@uncurry ('input => 'output),
297-
('a, 'b, 'c, 'd, 'e, 'f, 'g),
298-
) => callback<'input, 'output> = "useCallback"
277+
external useCallback7: ('f, ('a, 'b, 'c, 'd, 'e, 'f, 'g)) => 'f = "useCallback"
299278

300279
@module("react")
301280
external useContext: Context.t<'any> => 'any = "useContext"
@@ -430,52 +409,32 @@ module Uncurried = {
430409
@uncurry ('initialState => 'state),
431410
) => ('state, (. 'action) => unit) = "useReducer"
432411

433-
type callback<'input, 'output> = (. 'input) => 'output
434-
435412
@module("react")
436-
external useCallback: (@uncurry ('input => 'output)) => callback<'input, 'output> = "useCallback"
413+
external useCallback: 'f => 'f = "useCallback"
437414

438415
@module("react")
439-
external useCallback0: (
440-
@uncurry ('input => 'output),
441-
@as(json`[]`) _,
442-
) => callback<'input, 'output> = "useCallback"
416+
external useCallback0: ('f, @as(json`[]`) _) => 'f = "useCallback"
443417

444418
@module("react")
445-
external useCallback1: (@uncurry ('input => 'output), array<'a>) => callback<'input, 'output> =
446-
"useCallback"
419+
external useCallback1: ('f, array<'a>) => 'f = "useCallback"
447420

448421
@module("react")
449-
external useCallback2: (@uncurry ('input => 'output), ('a, 'b)) => callback<'input, 'output> =
450-
"useCallback"
422+
external useCallback2: ('f, ('a, 'b)) => 'f = "useCallback"
451423

452424
@module("react")
453-
external useCallback3: (@uncurry ('input => 'output), ('a, 'b, 'c)) => callback<'input, 'output> =
454-
"useCallback"
425+
external useCallback3: ('f, ('a, 'b, 'c)) => 'f = "useCallback"
455426

456427
@module("react")
457-
external useCallback4: (
458-
@uncurry ('input => 'output),
459-
('a, 'b, 'c, 'd),
460-
) => callback<'input, 'output> = "useCallback"
428+
external useCallback4: ('f, ('a, 'b, 'c, 'd)) => 'f = "useCallback"
461429

462430
@module("react")
463-
external useCallback5: (
464-
@uncurry ('input => 'output),
465-
('a, 'b, 'c, 'd, 'e),
466-
) => callback<'input, 'output> = "useCallback"
431+
external useCallback5: ('f, ('a, 'b, 'c, 'd, 'e)) => 'f = "useCallback"
467432

468433
@module("react")
469-
external useCallback6: (
470-
@uncurry ('input => 'output),
471-
('a, 'b, 'c, 'd, 'e, 'f),
472-
) => callback<'input, 'output> = "useCallback"
434+
external useCallback6: ('f, ('a, 'b, 'c, 'd, 'e, 'f)) => 'f = "useCallback"
473435

474436
@module("react")
475-
external useCallback7: (
476-
@uncurry ('input => 'output),
477-
('a, 'b, 'c, 'd, 'e, 'f, 'g),
478-
) => callback<'input, 'output> = "useCallback"
437+
external useCallback7: ('f, ('a, 'b, 'c, 'd, 'e, 'f, 'g)) => 'f = "useCallback"
479438
}
480439

481440
@set

src/v3/React_V3.res

+18-59
Original file line numberDiff line numberDiff line change
@@ -262,53 +262,32 @@ external useMemo6: (@uncurry (unit => 'any), ('a, 'b, 'c, 'd, 'e, 'f)) => 'any =
262262
@module("react")
263263
external useMemo7: (@uncurry (unit => 'any), ('a, 'b, 'c, 'd, 'e, 'f, 'g)) => 'any = "useMemo"
264264

265-
/* This is used as return values */
266-
type callback<'input, 'output> = React.callback<'input, 'output>
267-
268265
@module("react")
269-
external useCallback: (@uncurry ('input => 'output)) => callback<'input, 'output> = "useCallback"
266+
external useCallback: 'f => 'f = "useCallback"
270267

271268
@module("react")
272-
external useCallback0: (
273-
@uncurry ('input => 'output),
274-
@as(json`[]`) _,
275-
) => callback<'input, 'output> = "useCallback"
269+
external useCallback0: ('f, @as(json`[]`) _) => 'f = "useCallback"
276270

277271
@module("react")
278-
external useCallback1: (@uncurry ('input => 'output), array<'a>) => callback<'input, 'output> =
279-
"useCallback"
272+
external useCallback1: ('f, array<'a>) => 'f = "useCallback"
280273

281274
@module("react")
282-
external useCallback2: (@uncurry ('input => 'output), ('a, 'b)) => callback<'input, 'output> =
283-
"useCallback"
275+
external useCallback2: ('f, ('a, 'b)) => 'f = "useCallback"
284276

285277
@module("react")
286-
external useCallback3: (@uncurry ('input => 'output), ('a, 'b, 'c)) => callback<'input, 'output> =
287-
"useCallback"
278+
external useCallback3: ('f, ('a, 'b, 'c)) => 'f = "useCallback"
288279

289280
@module("react")
290-
external useCallback4: (
291-
@uncurry ('input => 'output),
292-
('a, 'b, 'c, 'd),
293-
) => callback<'input, 'output> = "useCallback"
281+
external useCallback4: ('f, ('a, 'b, 'c, 'd)) => 'f = "useCallback"
294282

295283
@module("react")
296-
external useCallback5: (
297-
@uncurry ('input => 'output),
298-
('a, 'b, 'c, 'd, 'e),
299-
) => callback<'input, 'output> = "useCallback"
284+
external useCallback5: ('f, ('a, 'b, 'c, 'd, 'e)) => 'f = "useCallback"
300285

301286
@module("react")
302-
external useCallback6: (
303-
@uncurry ('input => 'output),
304-
('a, 'b, 'c, 'd, 'e, 'f),
305-
) => callback<'input, 'output> = "useCallback"
287+
external useCallback6: ('f, ('a, 'b, 'c, 'd, 'e, 'f)) => 'f = "useCallback"
306288

307289
@module("react")
308-
external useCallback7: (
309-
@uncurry ('input => 'output),
310-
('a, 'b, 'c, 'd, 'e, 'f, 'g),
311-
) => callback<'input, 'output> = "useCallback"
290+
external useCallback7: ('f, ('a, 'b, 'c, 'd, 'e, 'f, 'g)) => 'f = "useCallback"
312291

313292
@module("react")
314293
external useContext: Context.t<'any> => 'any = "useContext"
@@ -389,52 +368,32 @@ module Uncurried = {
389368
@uncurry ('initialState => 'state),
390369
) => ('state, (. 'action) => unit) = "useReducer"
391370

392-
type callback<'input, 'output> = React.callback<'input, 'output>
393-
394371
@module("react")
395-
external useCallback: (@uncurry ('input => 'output)) => callback<'input, 'output> = "useCallback"
372+
external useCallback: 'f => 'f = "useCallback"
396373

397374
@module("react")
398-
external useCallback0: (
399-
@uncurry ('input => 'output),
400-
@as(json`[]`) _,
401-
) => callback<'input, 'output> = "useCallback"
375+
external useCallback0: ('f, @as(json`[]`) _) => 'f = "useCallback"
402376

403377
@module("react")
404-
external useCallback1: (@uncurry ('input => 'output), array<'a>) => callback<'input, 'output> =
405-
"useCallback"
378+
external useCallback1: ('f, array<'a>) => 'f = "useCallback"
406379

407380
@module("react")
408-
external useCallback2: (@uncurry ('input => 'output), ('a, 'b)) => callback<'input, 'output> =
409-
"useCallback"
381+
external useCallback2: ('f, ('a, 'b)) => 'f = "useCallback"
410382

411383
@module("react")
412-
external useCallback3: (@uncurry ('input => 'output), ('a, 'b, 'c)) => callback<'input, 'output> =
413-
"useCallback"
384+
external useCallback3: ('f, ('a, 'b, 'c)) => 'f = "useCallback"
414385

415386
@module("react")
416-
external useCallback4: (
417-
@uncurry ('input => 'output),
418-
('a, 'b, 'c, 'd),
419-
) => callback<'input, 'output> = "useCallback"
387+
external useCallback4: ('f, ('a, 'b, 'c, 'd)) => 'f = "useCallback"
420388

421389
@module("react")
422-
external useCallback5: (
423-
@uncurry ('input => 'output),
424-
('a, 'b, 'c, 'd, 'e),
425-
) => callback<'input, 'output> = "useCallback"
390+
external useCallback5: ('f, ('a, 'b, 'c, 'd, 'e)) => 'f = "useCallback"
426391

427392
@module("react")
428-
external useCallback6: (
429-
@uncurry ('input => 'output),
430-
('a, 'b, 'c, 'd, 'e, 'f),
431-
) => callback<'input, 'output> = "useCallback"
393+
external useCallback6: ('f, ('a, 'b, 'c, 'd, 'e, 'f)) => 'f = "useCallback"
432394

433395
@module("react")
434-
external useCallback7: (
435-
@uncurry ('input => 'output),
436-
('a, 'b, 'c, 'd, 'e, 'f, 'g),
437-
) => callback<'input, 'output> = "useCallback"
396+
external useCallback7: ('f, ('a, 'b, 'c, 'd, 'e, 'f, 'g)) => 'f = "useCallback"
438397
}
439398

440399
@module("react")

0 commit comments

Comments
 (0)