From c003e5855b5becae7eb9ebd5ce833950504bbab4 Mon Sep 17 00:00:00 2001 From: Cristiano Calcagno Date: Tue, 16 Jul 2024 16:34:19 +0200 Subject: [PATCH] Fix uncurried arity for primitives. --- CHANGELOG.md | 2 +- .../src/ImportHookDefault.res.js | 10 +++------- .../typescript-react-example/src/ImportHooks.res.js | 6 ++---- .../typescript-react-example/src/ImportIndex.res.js | 6 ++---- .../typescript-react-example/src/JSXV4.res.js | 6 ++---- .../typescript-react-example/src/MyInput.res.js | 6 ++---- jscomp/ml/typedecl.ml | 4 +++- 7 files changed, 15 insertions(+), 25 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a04d5b381e..8e76730088 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,7 +20,7 @@ - Allow free vars in types for type coercion `e :> t`. https://github.com/rescript-lang/rescript-compiler/pull/6828 - Allow `private` in with constraints. https://github.com/rescript-lang/rescript-compiler/pull/6843 - Add regex literals as syntax sugar for `@bs.re`. https://github.com/rescript-lang/rescript-compiler/pull/6776 -- Improved mechanism to determine arity of externals, which is consistent however the type is written. https://github.com/rescript-lang/rescript-compiler/pull/6874 https://github.com/rescript-lang/rescript-compiler/pull/6881 +- Improved mechanism to determine arity of externals, which is consistent however the type is written. https://github.com/rescript-lang/rescript-compiler/pull/6874 https://github.com/rescript-lang/rescript-compiler/pull/6881 https://github.com/rescript-lang/rescript-compiler/pull/6883 #### :boom: Breaking Change diff --git a/jscomp/gentype_tests/typescript-react-example/src/ImportHookDefault.res.js b/jscomp/gentype_tests/typescript-react-example/src/ImportHookDefault.res.js index 23e03de3b8..8b5cb1e464 100644 --- a/jscomp/gentype_tests/typescript-react-example/src/ImportHookDefault.res.js +++ b/jscomp/gentype_tests/typescript-react-example/src/ImportHookDefault.res.js @@ -3,13 +3,9 @@ import ImportHookDefaultGen from "./ImportHookDefault.gen"; import * as ImportHookDefaultGen$1 from "./ImportHookDefault.gen"; -function make(prim) { - return ImportHookDefaultGen$1.make(prim); -} +let make = ImportHookDefaultGen$1.make; -function make2(prim) { - return ImportHookDefaultGen(prim); -} +let make2 = ImportHookDefaultGen; let MM = { make2: make2 @@ -19,4 +15,4 @@ export { make, MM, } -/* ./ImportHookDefault.gen Not a pure module */ +/* make Not a pure module */ diff --git a/jscomp/gentype_tests/typescript-react-example/src/ImportHooks.res.js b/jscomp/gentype_tests/typescript-react-example/src/ImportHooks.res.js index 605aab7437..8bcba0f408 100644 --- a/jscomp/gentype_tests/typescript-react-example/src/ImportHooks.res.js +++ b/jscomp/gentype_tests/typescript-react-example/src/ImportHooks.res.js @@ -2,9 +2,7 @@ import * as ImportHooksGen from "./ImportHooks.gen"; -function make(prim) { - return ImportHooksGen.makeRenamed(prim); -} +let make = ImportHooksGen.makeRenamed; function foo(prim) { return ImportHooksGen.foo(prim); @@ -14,4 +12,4 @@ export { make, foo, } -/* ./ImportHooks.gen Not a pure module */ +/* make Not a pure module */ diff --git a/jscomp/gentype_tests/typescript-react-example/src/ImportIndex.res.js b/jscomp/gentype_tests/typescript-react-example/src/ImportIndex.res.js index 2ba6e9da19..34ab9cf267 100644 --- a/jscomp/gentype_tests/typescript-react-example/src/ImportIndex.res.js +++ b/jscomp/gentype_tests/typescript-react-example/src/ImportIndex.res.js @@ -2,11 +2,9 @@ import ImportIndexGen from "./ImportIndex.gen"; -function make(prim) { - return ImportIndexGen(prim); -} +let make = ImportIndexGen; export { make, } -/* ./ImportIndex.gen Not a pure module */ +/* make Not a pure module */ diff --git a/jscomp/gentype_tests/typescript-react-example/src/JSXV4.res.js b/jscomp/gentype_tests/typescript-react-example/src/JSXV4.res.js index fe8d4a088b..bd037b53c3 100644 --- a/jscomp/gentype_tests/typescript-react-example/src/JSXV4.res.js +++ b/jscomp/gentype_tests/typescript-react-example/src/JSXV4.res.js @@ -18,13 +18,11 @@ let CompV3 = { make: JSXV4$CompV3 }; -function make(prim) { - return JSXV4Gen.make(prim); -} +let make = JSXV4Gen.make; export { CompV4, CompV3, make, } -/* ./JSXV4.gen Not a pure module */ +/* make Not a pure module */ diff --git a/jscomp/gentype_tests/typescript-react-example/src/MyInput.res.js b/jscomp/gentype_tests/typescript-react-example/src/MyInput.res.js index f90bfe27cd..6fdab560cb 100644 --- a/jscomp/gentype_tests/typescript-react-example/src/MyInput.res.js +++ b/jscomp/gentype_tests/typescript-react-example/src/MyInput.res.js @@ -2,11 +2,9 @@ import MyInputGen from "./MyInput.gen"; -function make(prim) { - return MyInputGen(prim); -} +let make = MyInputGen; export { make, } -/* ./MyInput.gen Not a pure module */ +/* make Not a pure module */ diff --git a/jscomp/ml/typedecl.ml b/jscomp/ml/typedecl.ml index 382d66e52e..cdb97223cb 100644 --- a/jscomp/ml/typedecl.ml +++ b/jscomp/ml/typedecl.ml @@ -1719,7 +1719,9 @@ let rec arity_from_arrow_type env core_type ty = let parse_arity env core_type ty = match Ast_uncurried.uncurried_type_get_arity_opt ~env ty with | Some arity -> - let from_constructor = Ast_uncurried.uncurried_type_get_arity_opt ~env:Env.empty ty = None in + let from_constructor = match ty.desc with + | Tconstr (_, _, _) -> not (Ast_uncurried_utils.type_is_uncurried_fun ty) + | _ -> false in (arity, from_constructor) | None -> (arity_from_arrow_type env core_type ty, false)