@@ -51,6 +51,8 @@ class compiler_callbacks = object(self)
5151 val mutable after_typing = [] ;
5252 val before_save = ref [] ;
5353 val after_save = ref [] ;
54+ val before_save_only_new = ref [] ;
55+ val after_save_only_new = ref [] ;
5456 val after_filters = ref [] ;
5557 val after_generation = ref [] ;
5658 val mutable null_safety_report = [] ;
@@ -70,6 +72,12 @@ class compiler_callbacks = object(self)
7072 method add_after_save (f : unit -> unit ) : unit =
7173 after_save := f :: ! after_save
7274
75+ method add_before_save_only_new (f : module_type list -> unit ) : unit =
76+ before_save_only_new := f :: ! before_save_only_new
77+
78+ method add_after_save_only_new (f : module_type list -> unit ) : unit =
79+ after_save_only_new := f :: ! after_save_only_new
80+
7381 method add_after_filters (f : unit -> unit ) : unit =
7482 after_filters := f :: ! after_filters
7583
@@ -88,11 +96,22 @@ class compiler_callbacks = object(self)
8896 List. iter (fun f -> try f() with Error. Error err -> handle_error err) (List. rev l);
8997 self#run handle_error r
9098
99+ method run_with_types handle_error r (tl : module_type list ) =
100+ match ! r with
101+ | [] ->
102+ ()
103+ | l ->
104+ r := [] ;
105+ List. iter (fun f -> try f tl with Error. Error err -> handle_error err) (List. rev l);
106+ self#run_with_types handle_error r tl
107+
91108 method get_before_typer_create = before_typer_create
92109 method get_after_init_macros = after_init_macros
93110 method get_after_typing = after_typing
94111 method get_before_save = before_save
95112 method get_after_save = after_save
113+ method get_before_save_only_new = before_save_only_new
114+ method get_after_save_only_new = after_save_only_new
96115 method get_after_filters = after_filters
97116 method get_after_generation = after_generation
98117 method get_null_safety_report = null_safety_report
0 commit comments