@@ -397,10 +397,11 @@ let rec class_type_arity =
397397 (* ******************************************)
398398 (* Miscellaneous operations on row types *)
399399 (* ******************************************)
400+ type row_fields = (Asttypes .label * Types .row_field ) list
401+ type row_pairs = (Asttypes .label * Types .row_field * Types .row_field ) list
402+ let sort_row_fields : row_fields -> row_fields = List. sort (fun (p ,_ ) (q ,_ ) -> compare (p : string ) q)
400403
401- let sort_row_fields = List. sort (fun (p ,_ ) (q ,_ ) -> compare p q)
402-
403- let rec merge_rf r1 r2 pairs fi1 fi2 =
404+ let rec merge_rf (r1 : row_fields ) (r2 : row_fields ) (pairs : row_pairs ) (fi1 : row_fields ) (fi2 : row_fields ) =
404405 match fi1, fi2 with
405406 (l1 ,f1 as p1 )::fi1' , (l2 ,f2 as p2 )::fi2' ->
406407 if l1 = l2 then merge_rf r1 r2 ((l1,f1,f2)::pairs) fi1' fi2' else
@@ -409,7 +410,7 @@ let rec merge_rf r1 r2 pairs fi1 fi2 =
409410 | [] , _ -> (List. rev r1, List. rev_append r2 fi2, pairs)
410411 | _ , [] -> (List. rev_append r1 fi1, List. rev r2, pairs)
411412
412- let merge_row_fields fi1 fi2 =
413+ let merge_row_fields ( fi1 : row_fields ) ( fi2 : row_fields ) : row_fields * row_fields * row_pairs =
413414 match fi1, fi2 with
414415 [] , _ | _ , [] -> (fi1, fi2, [] )
415416 | [p1], _ when not (List. mem_assoc (fst p1) fi2) -> (fi1, fi2, [] )
0 commit comments