Skip to content

Commit 88c19e2

Browse files
committed
null to option
1 parent 5ec5738 commit 88c19e2

30 files changed

+480
-496
lines changed

jscomp/others/belt_internalAVLtree.ml

+5-5
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,17 @@ type ('k, 'v) node = {
2020
mutable left : ('k,'v) t;
2121
mutable right : ('k,'v) t
2222
}
23-
and ('key, 'a) t = ('key, 'a) node Js.null
23+
and ('key, 'a) t = ('key, 'a) node option
2424

2525

2626
type ('k, 'id) cmp = ('k, 'id) Belt_Id.cmp
2727

2828
module A = Belt_Array
2929
module S = Belt_SortArray
30-
external toOpt : 'a Js.null -> 'a option = "#null_to_opt"
31-
external return : 'a -> 'a Js.null = "%identity"
32-
external empty : 'a Js.null = "#null"
33-
external unsafeCoerce : 'a Js.null -> 'a = "%identity"
30+
external toOpt : 'a option -> 'a option = "%identity"
31+
external return : 'a -> 'a option = "%identity"
32+
let empty = None
33+
external unsafeCoerce : 'a option -> 'a = "%identity"
3434

3535

3636

jscomp/others/belt_internalAVLtree.mli

+4-4
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424

2525

2626

27-
type ('key, 'a) t = ('key, 'a) node Js.null
27+
type ('key, 'a) t = ('key, 'a) node option
2828

2929
and ('k, 'v) node = {
3030
mutable key : 'k;
@@ -35,9 +35,9 @@ and ('k, 'v) node = {
3535
}
3636

3737

38-
external toOpt : 'a Js.null -> 'a option = "#null_to_opt"
39-
external return : 'a -> 'a Js.null = "%identity"
40-
external empty : _ t = "#null"
38+
external toOpt : 'a option -> 'a option = "%identity"
39+
external return : 'a -> 'a option = "%identity"
40+
val empty : _ t
4141
(* val empty : _ t *)
4242
type ('k, 'id) cmp = ('k, 'id) Belt_Id.cmp
4343

jscomp/test/bs_MapInt_test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ function should(b) {
1111
}
1212

1313
function test(param) {
14-
var m = null;
14+
var m = Belt_MapInt.empty;
1515
for(var i = 0; i <= 999999; ++i){
1616
m = Belt_MapInt.set(m, i, i);
1717
}

jscomp/test/bs_hashtbl_string_test.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -103,9 +103,8 @@ function bench2(m) {
103103

104104
function bench3(m) {
105105
var empty_cmp = m.cmp;
106-
var empty_data = null;
107106
var cmp = m.cmp;
108-
var table = empty_data;
107+
var table = Belt_MapDict.empty;
109108
for(var i = 0; i <= 1000000; ++i){
110109
table = Belt_MapDict.set(table, String(i), i, cmp);
111110
}

jscomp/test/bs_map_set_dict_test.js

+8-13
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ var Belt_Id = require("../../lib/js/belt_Id.js");
55
var Belt_Map = require("../../lib/js/belt_Map.js");
66
var Belt_List = require("../../lib/js/belt_List.js");
77
var Belt_Array = require("../../lib/js/belt_Array.js");
8+
var Belt_MapInt = require("../../lib/js/belt_MapInt.js");
89
var Belt_MapDict = require("../../lib/js/belt_MapDict.js");
910
var Belt_SetDict = require("../../lib/js/belt_SetDict.js");
1011
var Caml_primitive = require("../../lib/js/caml_primitive.js");
@@ -34,11 +35,9 @@ var Ic3 = Belt_Id.comparable(Caml_primitive.caml_int_compare);
3435

3536
var m0_cmp = Icmp.cmp;
3637

37-
var m0_data = null;
38-
3938
var m0 = {
4039
cmp: m0_cmp,
41-
data: m0_data
40+
data: Belt_MapDict.empty
4241
};
4342

4443
var m00_cmp = Ic3.cmp;
@@ -54,23 +53,19 @@ var I2 = Belt_Id.comparable((function (x, y) {
5453

5554
var m_cmp = Icmp2.cmp;
5655

57-
var m_data = null;
58-
5956
var m = {
6057
cmp: m_cmp,
61-
data: m_data
58+
data: Belt_MapDict.empty
6259
};
6360

6461
var m2_cmp = I2.cmp;
6562

66-
var m2_data = null;
67-
6863
var m2 = {
6964
cmp: m2_cmp,
70-
data: m2_data
65+
data: Belt_MapDict.empty
7166
};
7267

73-
var data = null;
68+
var data = Belt_MapDict.empty;
7469

7570
Belt_Map.getId(m2);
7671

@@ -91,7 +86,7 @@ var newm = {
9186

9287
console.log(newm);
9388

94-
var m11 = Belt_MapDict.set(null, 1, 1, Icmp.cmp);
89+
var m11 = Belt_MapDict.set(Belt_MapDict.empty, 1, 1, Icmp.cmp);
9590

9691
console.log(m11);
9792

@@ -182,9 +177,9 @@ var A = /* alias */0;
182177

183178
var L = /* alias */0;
184179

185-
var vv = null;
180+
var vv = Belt_MapInt.empty;
186181

187-
var vv2 = null;
182+
var vv2 = Belt_MapInt.empty;
188183

189184
var Md0 = /* alias */0;
190185

jscomp/test/bs_map_test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ var mapOfArray = Belt_MapInt.fromArray;
5050
var setOfArray = Belt_SetInt.fromArray;
5151

5252
function emptyMap(param) {
53-
return null;
53+
return Belt_MapInt.empty;
5454
}
5555

5656
var v = Belt_Array.makeByAndShuffle(1000000, (function (i) {

jscomp/test/bs_poly_map_test.js

+5-9
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ function setOfArray(x) {
3939
function emptyMap(param) {
4040
return {
4141
cmp: Icmp.cmp,
42-
data: null
42+
data: Belt_MapDict.empty
4343
};
4444
}
4545

@@ -180,11 +180,9 @@ function acc(m, is) {
180180

181181
var m_cmp = Icmp.cmp;
182182

183-
var m_data = null;
184-
185183
var m = {
186184
cmp: m_cmp,
187-
data: m_data
185+
data: Belt_MapDict.empty
188186
};
189187

190188
var m1 = acc(m, Belt_Array.concat(Array_data_util.randomRange(0, 20), Array_data_util.randomRange(10, 30)));
@@ -200,11 +198,9 @@ b("File \"bs_poly_map_test.ml\", line 103, characters 4-11", Belt_Map.eq(m1, Bel
200198

201199
var v0_cmp = Icmp.cmp;
202200

203-
var v0_data = null;
204-
205201
var v0 = {
206202
cmp: v0_cmp,
207-
data: v0_data
203+
data: Belt_MapDict.empty
208204
};
209205

210206
var v1 = Belt_Map.mergeMany(v0, Belt_Array.map(Array_data_util.randomRange(0, 10000), (function (x) {
@@ -257,14 +253,14 @@ b("File \"bs_poly_map_test.ml\", line 128, characters 4-11", match$4 !== undefin
257253

258254
var map = Belt_Map.remove({
259255
cmp: Icmp.cmp,
260-
data: null
256+
data: Belt_MapDict.empty
261257
}, 0);
262258

263259
b("File \"bs_poly_map_test.ml\", line 129, characters 4-11", Belt_MapDict.isEmpty(map.data));
264260

265261
var map$1 = Belt_Map.removeMany({
266262
cmp: Icmp.cmp,
267-
data: null
263+
data: Belt_MapDict.empty
268264
}, [0]);
269265

270266
b("File \"bs_poly_map_test.ml\", line 130, characters 4-11", Belt_MapDict.isEmpty(map$1.data));

jscomp/test/gpr_4265_test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ function eq(loc, x, y) {
1717
}
1818

1919
var mockMap = {
20-
data: null
20+
data: undefined
2121
};
2222

2323
function add(id) {

lib/es6/belt_Map.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ function merge(s1, s2, f) {
9696
function make(id) {
9797
return {
9898
cmp: id.cmp,
99-
data: null
99+
data: Belt_MapDict.empty
100100
};
101101
}
102102

lib/es6/belt_MapDict.js

+25-27
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import * as Caml_option from "./caml_option.js";
55
import * as Belt_internalAVLtree from "./belt_internalAVLtree.js";
66

77
function set(t, newK, newD, cmp) {
8-
if (t === null) {
8+
if (t === undefined) {
99
return Belt_internalAVLtree.singleton(newK, newD);
1010
}
1111
var k = t.key;
@@ -24,7 +24,7 @@ function set(t, newK, newD, cmp) {
2424
}
2525

2626
function updateU(t, newK, f, cmp) {
27-
if (t !== null) {
27+
if (t !== undefined) {
2828
var k = t.key;
2929
var c = cmp(newK, k);
3030
if (c === 0) {
@@ -34,10 +34,10 @@ function updateU(t, newK, f, cmp) {
3434
}
3535
var l = t.left;
3636
var r = t.right;
37-
if (l === null) {
37+
if (l === undefined) {
3838
return r;
3939
}
40-
if (r === null) {
40+
if (r === undefined) {
4141
return l;
4242
}
4343
var kr = {
@@ -85,10 +85,10 @@ function removeAux0(n, x, cmp) {
8585
var r = n.right;
8686
var c = cmp(x, v);
8787
if (c === 0) {
88-
if (l === null) {
88+
if (l === undefined) {
8989
return r;
9090
}
91-
if (r === null) {
91+
if (r === undefined) {
9292
return l;
9393
}
9494
var kr = {
@@ -101,7 +101,7 @@ function removeAux0(n, x, cmp) {
101101
return Belt_internalAVLtree.bal(l, kr.contents, vr.contents, r$1);
102102
}
103103
if (c < 0) {
104-
if (l === null) {
104+
if (l === undefined) {
105105
return n;
106106
}
107107
var ll = removeAux0(l, x, cmp);
@@ -111,7 +111,7 @@ function removeAux0(n, x, cmp) {
111111
return Belt_internalAVLtree.bal(ll, v, n.value, r);
112112
}
113113
}
114-
if (r === null) {
114+
if (r === undefined) {
115115
return n;
116116
}
117117
var rr = removeAux0(r, x, cmp);
@@ -123,11 +123,10 @@ function removeAux0(n, x, cmp) {
123123
}
124124

125125
function remove(n, x, cmp) {
126-
if (n !== null) {
126+
if (n !== undefined) {
127127
return removeAux0(n, x, cmp);
128-
} else {
129-
return null;
130128
}
129+
131130
}
132131

133132
function mergeMany(h, arr, cmp) {
@@ -154,9 +153,9 @@ function splitAuxPivot(n, x, pres, cmp) {
154153
];
155154
}
156155
if (c < 0) {
157-
if (l === null) {
156+
if (l === undefined) {
158157
return /* tuple */[
159-
null,
158+
undefined,
160159
n
161160
];
162161
}
@@ -166,10 +165,10 @@ function splitAuxPivot(n, x, pres, cmp) {
166165
Belt_internalAVLtree.join(match[1], v, d, r)
167166
];
168167
}
169-
if (r === null) {
168+
if (r === undefined) {
170169
return /* tuple */[
171170
n,
172-
null
171+
undefined
173172
];
174173
}
175174
var match$1 = splitAuxPivot(r, x, pres, cmp);
@@ -180,11 +179,11 @@ function splitAuxPivot(n, x, pres, cmp) {
180179
}
181180

182181
function split(n, x, cmp) {
183-
if (n === null) {
182+
if (n === undefined) {
184183
return /* tuple */[
185184
/* tuple */[
186-
null,
187-
null
185+
undefined,
186+
undefined
188187
],
189188
undefined
190189
];
@@ -200,16 +199,16 @@ function split(n, x, cmp) {
200199
}
201200

202201
function mergeU(s1, s2, f, cmp) {
203-
if (s1 === null) {
204-
if (s2 !== null) {
202+
if (s1 === undefined) {
203+
if (s2 !== undefined) {
205204
return Belt_internalAVLtree.keepMapU(s2, (function (k, v) {
206205
return f(k, undefined, Caml_option.some(v));
207206
}));
208207
} else {
209-
return null;
208+
return ;
210209
}
211210
}
212-
if (s2 === null) {
211+
if (s2 === undefined) {
213212
return Belt_internalAVLtree.keepMapU(s1, (function (k, v) {
214213
return f(k, Caml_option.some(v), undefined);
215214
}));
@@ -250,7 +249,7 @@ function merge(s1, s2, f, cmp) {
250249

251250
function removeMany(t, keys, cmp) {
252251
var len = keys.length;
253-
if (t !== null) {
252+
if (t !== undefined) {
254253
var _t = t;
255254
var _i = 0;
256255
while(true) {
@@ -261,19 +260,18 @@ function removeMany(t, keys, cmp) {
261260
}
262261
var ele = keys[i];
263262
var u = removeAux0(t$1, ele, cmp);
264-
if (u === null) {
263+
if (u === undefined) {
265264
return u;
266265
}
267266
_i = i + 1 | 0;
268267
_t = u;
269268
continue ;
270269
};
271-
} else {
272-
return null;
273270
}
271+
274272
}
275273

276-
var empty = null;
274+
var empty;
277275

278276
var isEmpty = Belt_internalAVLtree.isEmpty;
279277

0 commit comments

Comments
 (0)