@@ -363,9 +363,11 @@ type constant =
363363 | NativeString of Native_string .t
364364 | Float of float
365365 | Float_array of float array
366+ | Int of int32
367+ | Int32 of int32
366368 | Int64 of int64
369+ | NativeInt of nativeint
367370 | Tuple of int * constant array * array_or_not
368- | Int of int32
369371
370372let rec constant_equal a b =
371373 match a, b with
@@ -383,26 +385,58 @@ let rec constant_equal a b =
383385 | Some s , Some c -> same := Some (s && c)
384386 done ;
385387 ! same
388+ | Int a , Int b | Int32 a , Int32 b -> Some (Int32. equal a b)
386389 | Int64 a , Int64 b -> Some (Int64. equal a b)
390+ | NativeInt a , NativeInt b -> Some (Nativeint. equal a b)
387391 | Float_array a , Float_array b -> Some (Array. equal Float. equal a b)
388- | Int a , Int b -> Some (Int32. equal a b)
389392 | Float a , Float b -> Some (Float. equal a b)
390393 | String _ , NativeString _ | NativeString _ , String _ -> None
391394 | Int _ , Float _ | Float _ , Int _ -> None
392395 | Tuple ((0 | 254 ), _ , _ ), Float_array _ -> None
393396 | Float_array _ , Tuple ((0 | 254 ), _ , _ ) -> None
394- | Tuple _ , (String _ | NativeString _ | Int64 _ | Int _ | Float _ | Float_array _ ) ->
395- Some false
396- | Float_array _ , (String _ | NativeString _ | Int64 _ | Int _ | Float _ | Tuple _ ) ->
397- Some false
398- | String _ , (Int64 _ | Int _ | Float _ | Tuple _ | Float_array _ ) -> Some false
399- | NativeString _ , (Int64 _ | Int _ | Float _ | Tuple _ | Float_array _ ) -> Some false
400- | Int64 _ , (String _ | NativeString _ | Int _ | Float _ | Tuple _ | Float_array _ ) ->
397+ | ( Tuple _
398+ , ( String _
399+ | NativeString _
400+ | Int64 _
401+ | Int _
402+ | Int32 _
403+ | NativeInt _
404+ | Float _
405+ | Float_array _ ) ) -> Some false
406+ | ( Float_array _
407+ , ( String _
408+ | NativeString _
409+ | Int64 _
410+ | Int _
411+ | Int32 _
412+ | NativeInt _
413+ | Float _
414+ | Tuple _ ) ) -> Some false
415+ | String _, (Int64 _ | Int _ | Int32 _ | NativeInt _ | Float _ | Tuple _ | Float_array _)
416+ -> Some false
417+ | ( NativeString _
418+ , (Int64 _ | Int _ | Int32 _ | NativeInt _ | Float _ | Tuple _ | Float_array _ ) ) ->
401419 Some false
420+ | ( Int64 _
421+ , ( String _
422+ | NativeString _
423+ | Int _
424+ | Int32 _
425+ | NativeInt _
426+ | Float _
427+ | Tuple _
428+ | Float_array _ ) ) -> Some false
402429 | Float _ , (String _ | NativeString _ | Float_array _ | Int64 _ | Tuple (_ , _ , _ )) ->
403430 Some false
404- | Int _ , (String _ | NativeString _ | Float_array _ | Int64 _ | Tuple (_ , _ , _ )) ->
431+ | ( (Int _ | Int32 _ | NativeInt _)
432+ , (String _ | NativeString _ | Float_array _ | Int64 _ | Tuple (_ , _ , _ )) ) ->
405433 Some false
434+ (* Note: the following cases should not occur when compiling to Javascript *)
435+ | Int _, (Int32 _ | NativeInt _)
436+ | Int32 _, (Int _ | NativeInt _)
437+ | NativeInt _, (Int _ | Int32 _)
438+ | (Int32 _ | NativeInt _), Float _
439+ | Float _ , (Int32 _ | NativeInt _ ) -> None
406440
407441type loc =
408442 | No
@@ -492,7 +526,10 @@ module Print = struct
492526 Format. fprintf f " %.12g" a.(i)
493527 done ;
494528 Format. fprintf f " |]"
529+ | Int i -> Format. fprintf f " %ld" i
530+ | Int32 i -> Format. fprintf f " %ldl" i
495531 | Int64 i -> Format. fprintf f " %LdL" i
532+ | NativeInt i -> Format. fprintf f " %ndn" i
496533 | Tuple (tag , a , _ ) -> (
497534 Format. fprintf f " <%d>" tag;
498535 match Array. length a with
@@ -509,7 +546,6 @@ module Print = struct
509546 constant f a.(i)
510547 done ;
511548 Format. fprintf f " )" )
512- | Int i -> Format. fprintf f " %ld" i
513549
514550 let arg f a =
515551 match a with
0 commit comments