@@ -446,47 +446,63 @@ let summarize_from_cckappa parameters error (compil : Cckappa_sig.compil) =
446446 in
447447 error, summary
448448
449+ let add_correct_id get_map set_map set_id diff after next_id =
450+ let sorted_diff =
451+ List. sort (fun (_ , _ , id1 ) (_ , _ , id2 ) -> compare id1 id2) diff
452+ in
453+ let map_after = get_map after in
454+ let map_after, _ =
455+ List. fold_left
456+ (fun (map_after , next_id ) (key , elt , _ ) ->
457+ let elt = set_id next_id elt in
458+ Mods.StringMap. add key elt map_after, next_id + 1 )
459+ (map_after, next_id) sorted_diff
460+ in
461+ let after = set_map map_after after in
462+ after
463+
449464let diff_gen diff_pos scan_pos set_id get_id get_obj set_map get_map parameters
450465 errors ~before ~after ~delta =
451466 let map_before = get_map before in
452467 let map_after = get_map after in
453468 let ( errors,
454- (removed_list, created_list, pos_renaming, pos_removing, map_after, _) )
455- =
469+ ( removed_list,
470+ created_list,
471+ extended_created_list,
472+ pos_renaming,
473+ pos_removing ) ) =
456474 Mods.StringMap. monadic_fold2 parameters errors
457475 (fun _parameters errors _ elt elt'
458- (removed_list , added_list , pos_diff , pos_removing , map_after , next_id ) ->
476+ (removed_list , added_list , e_added_list , pos_diff , pos_removing ) ->
459477 ( errors,
460478 ( removed_list,
461479 added_list,
480+ e_added_list,
462481 diff_pos (get_obj elt) (get_obj elt') pos_diff,
463- pos_removing,
464- map_after,
465- next_id ) ))
482+ pos_removing ) ))
466483 (fun _parameters errors _ elt
467- (removed_list , added_list , pos_diff , pos_deleted , map_after , next_id ) ->
484+ (removed_list , added_list , e_added_list , pos_diff , pos_deleted ) ->
468485 ( errors,
469486 ( get_id elt :: removed_list,
470487 added_list,
488+ e_added_list,
471489 pos_diff,
472- scan_pos (fun a b -> a :: b) (get_obj elt) pos_deleted,
473- map_after,
474- next_id ) ))
490+ scan_pos (fun a b -> a :: b) (get_obj elt) pos_deleted ) ))
475491 (fun _parameters errors key elt
476- (removed_list , added_list , pos_diff , pos_removing , map_after , next_id ) ->
492+ (removed_list , added_list , e_added_list , pos_diff , pos_removing ) ->
477493 let id = get_id elt in
478- let elt = set_id next_id elt in
479494 ( errors,
480495 ( removed_list,
481496 id :: added_list,
497+ (key, elt, id) :: e_added_list,
482498 pos_diff,
483- pos_removing,
484- Mods.StringMap. add key elt map_after,
485- next_id + 1 ) ))
499+ pos_removing ) ))
486500 map_before map_after
487- ([] , [] , Loc. diff_pos_empty, Loc. remove_pos_empty, map_after, delta)
501+ ([] , [] , [] , Loc. diff_pos_empty, Loc. remove_pos_empty)
502+ in
503+ let after =
504+ add_correct_id get_map set_map set_id extended_created_list after delta
488505 in
489- let after = set_map map_after after in
490506 ( errors,
491507 {
492508 new_elt = created_list;
0 commit comments