Skip to content

Commit 4a781b4

Browse files
committed
Support Map and WeakMap
1 parent 0e6ca40 commit 4a781b4

File tree

9 files changed

+45
-0
lines changed

9 files changed

+45
-0
lines changed

jscomp/gentype/GenTypeCommon.ml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,10 +217,12 @@ let unknown = ident "unknown"
217217
let bigintT = ident "BigInt"
218218
let booleanT = ident "boolean"
219219
let dateT = ident "Date"
220+
let mapT (x,y) = ident ~typeArgs:[x;y] "Map"
220221
let numberT = ident "number"
221222
let regexpT = ident "RegExp"
222223
let stringT = ident "string"
223224
let unitT = ident "void"
225+
let weakmapT (x,y) = ident ~typeArgs:[x;y] "WeakMap"
224226
let int64T = Tuple [numberT; numberT]
225227

226228
module NodeFilename = struct

jscomp/gentype/TranslateTypeExprFromTypes.ml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,18 @@ let translateConstr ~config ~paramsTranslation ~(path : Path.t) ~typeEnv =
8484
{dependencies = []; type_ = bigintT}
8585
| (["Js"; "Date"; "t"] | ["Date"; "t"]), [] ->
8686
{dependencies = []; type_ = dateT}
87+
| ["Map"; "t"], [paramTranslation1; paramTranslation2] ->
88+
{
89+
dependencies =
90+
paramTranslation1.dependencies @ paramTranslation2.dependencies;
91+
type_ = mapT (paramTranslation1.type_, paramTranslation2.type_);
92+
}
93+
| ["WeakMap"; "t"], [paramTranslation1; paramTranslation2] ->
94+
{
95+
dependencies =
96+
paramTranslation1.dependencies @ paramTranslation2.dependencies;
97+
type_ = weakmapT (paramTranslation1.type_, paramTranslation2.type_);
98+
}
8799
| (["Js"; "Re"; "t"] | ["RegExp"; "t"]), [] ->
88100
{dependencies = []; type_ = regexpT}
89101
| (["FB"; "unit"] | ["unit"]), [] -> {dependencies = []; type_ = unitT}

jscomp/gentype_tests/typescript-react-example/src/Core.bs.js

Lines changed: 13 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

jscomp/gentype_tests/typescript-react-example/src/Core.gen.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,7 @@ export const bigint1: (x:BigInt) => BigInt = CoreBS.bigint1;
4343
export const regexp0: (x:RegExp) => RegExp = CoreBS.regexp0;
4444

4545
export const regexp1: (x:RegExp) => RegExp = CoreBS.regexp1;
46+
47+
export const map1: (x:Map<string,number>) => Map<string,number> = CoreBS.map1;
48+
49+
export const weakmap1: (x:WeakMap<number[],number>) => WeakMap<number[],number> = CoreBS.weakmap1;

jscomp/gentype_tests/typescript-react-example/src/Core.res

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,11 @@ let regexp0 = (x: Js.Re.t) => x
4545

4646
@genType
4747
let regexp1 = (x: RegExp.t) => x
48+
49+
module Map = Map_
50+
51+
@genType
52+
let map1 = (x: Map.t<string, int>) => x
53+
54+
@genType
55+
let weakmap1 = (x: WeakMap.t<array<int>, int>) => x

jscomp/gentype_tests/typescript-react-example/src/Map_.bs.js

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
type t<'k, 'v>

jscomp/gentype_tests/typescript-react-example/src/WeakMap.bs.js

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
type t<'k, 'v>

0 commit comments

Comments
 (0)