@@ -559,7 +559,8 @@ let string_length ?comment (e : t) : t =
559
559
(* TODO: use [Buffer] instead? *)
560
560
let bytes_length ?comment (e : t ) : t =
561
561
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))
563
564
| _ -> {expression_desc = Length (e, Bytes ); comment}
564
565
565
566
let function_length ?comment (e : t ) : t =
@@ -624,7 +625,8 @@ let rec triple_equal ?comment (e0 : t) (e1 : t) : t =
624
625
| Undefined _, Optional_block _
625
626
| Optional_block _, Undefined _
626
627
| Null , Undefined _
627
- | Undefined _ , Null ->
628
+ | Undefined _, Null
629
+ when no_side_effect e0 && no_side_effect e1 ->
628
630
false_
629
631
| Null , Null | Undefined _ , Undefined _ -> true_
630
632
| _ -> {expression_desc = Bin (EqEqEq , e0, e1); comment}
@@ -1604,11 +1606,9 @@ let is_pos_pow n =
1604
1606
1605
1607
let int32_mul ?comment (e1 : J.expression ) (e2 : J.expression ) : J.expression =
1606
1608
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 ->
1609
1610
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 ->
1612
1612
zero_int_literal
1613
1613
| ( {expression_desc = Number (Int {i = i0}); _},
1614
1614
{expression_desc = Number (Int {i = i1}); _} ) ->
0 commit comments