Skip to content

Commit f7475f7

Browse files
committed
remove unused primitive unsafeCoerce
1 parent 33def14 commit f7475f7

File tree

3 files changed

+31
-24
lines changed

3 files changed

+31
-24
lines changed

Diff for: jscomp/others/belt_internalAVLtree.ml

+21-18
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
(***********************************************************************)
1313
(** Almost rewritten by authors of BuckleScript *)
1414

15-
15+
[@@@bs.config {flags = [|"-bs-noassertfalse" |] }]
1616
type ('k, 'v) node = {
1717
mutable key : 'k;
1818
mutable value : 'v;
@@ -29,10 +29,6 @@ module A = Belt_Array
2929
module S = Belt_SortArray
3030

3131

32-
external unsafeCoerce : 'a option -> 'a = "%identity"
33-
34-
35-
3632
let treeHeight (n : _ t) =
3733
match n with
3834
None -> 0
@@ -70,20 +66,23 @@ let bal l x d r =
7066
let hl = match l with None -> 0 | Some n -> n.height in
7167
let hr = match r with None -> 0 | Some n -> n.height in
7268
if hl > hr + 2 then begin
73-
let {left = ll; key = lv; value = ld; right = lr} = l |. unsafeCoerce
74-
in
69+
match l with None -> assert false
70+
| Some {left = ll; key = lv; value = ld; right = lr} ->
7571
if treeHeight ll >= treeHeight lr then
7672
create ll lv ld (create lr x d r)
7773
else begin
78-
let lr = lr |. unsafeCoerce in
74+
match lr with None -> assert false
75+
| Some lr ->
7976
create (create ll lv ld lr.left) lr.key lr.value (create lr.right x d r)
8077
end
8178
end else if hr > hl + 2 then begin
82-
let {left = rl; key = rv; value = rd; right = rr} = r |. unsafeCoerce in
79+
match r with None -> assert false
80+
| Some {left = rl; key = rv; value = rd; right = rr} ->
8381
if treeHeight rr >= treeHeight rl then
8482
create (create l x d rl) rv rd rr
8583
else begin
86-
let rl = rl |. unsafeCoerce in
84+
match rl with None -> assert false
85+
| Some rl ->
8786
create (create l x d rl.left) rl.key rl.value (create rl.right rv rd rr)
8887
end
8988
end else
@@ -645,7 +644,8 @@ let rec has n x ~cmp =
645644
L rotation, Some root node
646645
*)
647646
let rotateWithLeftChild k2 =
648-
let k1 = unsafeCoerce k2.left in
647+
match k2.left with None -> assert false
648+
| Some k1 ->
649649
(k2.left <- k1.right);
650650
(k1.right <- (Some k2 ));
651651
let hlk2, hrk2 = (treeHeight k2.left, (treeHeight k2.right)) in
@@ -656,7 +656,8 @@ let rotateWithLeftChild k2 =
656656
k1
657657
(* right rotation *)
658658
let rotateWithRightChild k1 =
659-
let k2 = unsafeCoerce k1.right in
659+
match k1.right with None -> assert false
660+
| Some k2 ->
660661
(k1.right <- k2.left);
661662
(k2.left <- (Some k1));
662663
let hlk1, hrk1 = ((treeHeight k1.left), (treeHeight k1.right)) in
@@ -669,12 +670,14 @@ let rotateWithRightChild k1 =
669670
double l rotation
670671
*)
671672
let doubleWithLeftChild k3 =
672-
let v = rotateWithRightChild (unsafeCoerce k3.left) in
673+
let k3l = match k3.left with None -> assert false | Some x -> x in
674+
let v = rotateWithRightChild k3l in
673675
(k3.left <- (Some v ));
674676
rotateWithLeftChild k3
675677

676678
let doubleWithRightChild k2 =
677-
let v = rotateWithLeftChild (unsafeCoerce k2.right) in
679+
let k2r = match k2.right with None -> assert false | Some x -> x in
680+
let v = rotateWithLeftChild k2r in
678681
(k2.right <- (Some v));
679682
rotateWithRightChild k2
680683

@@ -687,17 +690,17 @@ let balMutate nt =
687690
let l, r = (nt.left, nt.right) in
688691
let hl, hr = (treeHeight l, treeHeight r) in
689692
if hl > 2 + hr then
690-
let l = unsafeCoerce l in
691-
let {left = ll; right = lr} = l in
693+
match l with None -> assert false
694+
| Some {left = ll; right = lr} ->
692695
(if heightGe ll lr then
693696
heightUpdateMutate (rotateWithLeftChild nt)
694697
else
695698
heightUpdateMutate (doubleWithLeftChild nt)
696699
)
697700
else
698701
if hr > 2 + hl then
699-
let r = unsafeCoerce r in
700-
let {left = rl; right = rr} = r in
702+
match r with None -> assert false
703+
| Some {left = rl; right = rr} ->
701704
(if heightGe rr rl then
702705
heightUpdateMutate (rotateWithRightChild nt)
703706
else

Diff for: lib/es6/belt_internalAVLtree.js

+5-3
Original file line numberDiff line numberDiff line change
@@ -594,7 +594,7 @@ function checkInvariantInternal(_v) {
594594
var r = v.right;
595595
var diff = treeHeight(l) - treeHeight(r) | 0;
596596
if (!(diff <= 2 && diff >= -2)) {
597-
throw new Error("File \"belt_internalAVLtree.ml\", line 381, characters 6-12");
597+
throw new Error("File \"belt_internalAVLtree.ml\", line 380, characters 6-12");
598598
}
599599
checkInvariantInternal(l);
600600
_v = r;
@@ -967,13 +967,15 @@ function rotateWithRightChild(k1) {
967967
}
968968

969969
function doubleWithLeftChild(k3) {
970-
var v = rotateWithRightChild(k3.left);
970+
var x = k3.left;
971+
var v = rotateWithRightChild(x);
971972
k3.left = v;
972973
return rotateWithLeftChild(k3);
973974
}
974975

975976
function doubleWithRightChild(k2) {
976-
var v = rotateWithLeftChild(k2.right);
977+
var x = k2.right;
978+
var v = rotateWithLeftChild(x);
977979
k2.right = v;
978980
return rotateWithRightChild(k2);
979981
}

Diff for: lib/js/belt_internalAVLtree.js

+5-3
Original file line numberDiff line numberDiff line change
@@ -594,7 +594,7 @@ function checkInvariantInternal(_v) {
594594
var r = v.right;
595595
var diff = treeHeight(l) - treeHeight(r) | 0;
596596
if (!(diff <= 2 && diff >= -2)) {
597-
throw new Error("File \"belt_internalAVLtree.ml\", line 381, characters 6-12");
597+
throw new Error("File \"belt_internalAVLtree.ml\", line 380, characters 6-12");
598598
}
599599
checkInvariantInternal(l);
600600
_v = r;
@@ -967,13 +967,15 @@ function rotateWithRightChild(k1) {
967967
}
968968

969969
function doubleWithLeftChild(k3) {
970-
var v = rotateWithRightChild(k3.left);
970+
var x = k3.left;
971+
var v = rotateWithRightChild(x);
971972
k3.left = v;
972973
return rotateWithLeftChild(k3);
973974
}
974975

975976
function doubleWithRightChild(k2) {
976-
var v = rotateWithLeftChild(k2.right);
977+
var x = k2.right;
978+
var v = rotateWithLeftChild(x);
977979
k2.right = v;
978980
return rotateWithRightChild(k2);
979981
}

0 commit comments

Comments
 (0)