Skip to content

Commit 2e84c84

Browse files
committed
More side effect cases.
1 parent fbb2774 commit 2e84c84

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

compiler/core/js_exp_make.ml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -559,7 +559,8 @@ let string_length ?comment (e : t) : t =
559559
(* TODO: use [Buffer] instead? *)
560560
let bytes_length ?comment (e : t) : t =
561561
match e.expression_desc with
562-
| Array (l, _) -> int ?comment (Int32.of_int (List.length l))
562+
| Array (l, _) when no_side_effect e ->
563+
int ?comment (Int32.of_int (List.length l))
563564
| _ -> {expression_desc = Length (e, Bytes); comment}
564565

565566
let function_length ?comment (e : t) : t =
@@ -624,7 +625,8 @@ let rec triple_equal ?comment (e0 : t) (e1 : t) : t =
624625
| Undefined _, Optional_block _
625626
| Optional_block _, Undefined _
626627
| Null, Undefined _
627-
| Undefined _, Null ->
628+
| Undefined _, Null
629+
when no_side_effect e0 && no_side_effect e1 ->
628630
false_
629631
| Null, Null | Undefined _, Undefined _ -> true_
630632
| _ -> {expression_desc = Bin (EqEqEq, e0, e1); comment}
@@ -1604,11 +1606,9 @@ let is_pos_pow n =
16041606

16051607
let int32_mul ?comment (e1 : J.expression) (e2 : J.expression) : J.expression =
16061608
match (e1, e2) with
1607-
| {expression_desc = Number (Int {i = 0l}); _}, x
1608-
when Js_analyzer.no_side_effect_expression x ->
1609+
| {expression_desc = Number (Int {i = 0l}); _}, x when no_side_effect x ->
16091610
zero_int_literal
1610-
| x, {expression_desc = Number (Int {i = 0l}); _}
1611-
when Js_analyzer.no_side_effect_expression x ->
1611+
| x, {expression_desc = Number (Int {i = 0l}); _} when no_side_effect x ->
16121612
zero_int_literal
16131613
| ( {expression_desc = Number (Int {i = i0}); _},
16141614
{expression_desc = Number (Int {i = i1}); _} ) ->

0 commit comments

Comments
 (0)