|
@@ -168,39 +168,48 @@ type platform_config = {
|
|
|
}
|
|
|
|
|
|
class compiler_callbacks = object(self)
|
|
|
- val mutable before_typer_create = [];
|
|
|
- val mutable after_init_macros = [];
|
|
|
+ val before_typer_create = ref [];
|
|
|
+ val after_init_macros = ref [];
|
|
|
val mutable after_typing = [];
|
|
|
- val mutable before_save = [];
|
|
|
- val mutable after_save = [];
|
|
|
- val mutable after_filters = [];
|
|
|
- val mutable after_generation = [];
|
|
|
+ val before_save = ref [];
|
|
|
+ val after_save = ref [];
|
|
|
+ val after_filters = ref [];
|
|
|
+ val after_generation = ref [];
|
|
|
val mutable null_safety_report = [];
|
|
|
|
|
|
method add_before_typer_create (f : unit -> unit) : unit =
|
|
|
- before_typer_create <- f :: before_typer_create
|
|
|
+ before_typer_create := f :: !before_typer_create
|
|
|
|
|
|
method add_after_init_macros (f : unit -> unit) : unit =
|
|
|
- after_init_macros <- f :: after_init_macros
|
|
|
+ after_init_macros := f :: !after_init_macros
|
|
|
|
|
|
method add_after_typing (f : module_type list -> unit) : unit =
|
|
|
after_typing <- f :: after_typing
|
|
|
|
|
|
method add_before_save (f : unit -> unit) : unit =
|
|
|
- before_save <- f :: before_save
|
|
|
+ before_save := f :: !before_save
|
|
|
|
|
|
method add_after_save (f : unit -> unit) : unit =
|
|
|
- after_save <- f :: after_save
|
|
|
+ after_save := f :: !after_save
|
|
|
|
|
|
method add_after_filters (f : unit -> unit) : unit =
|
|
|
- after_filters <- f :: after_filters
|
|
|
+ after_filters := f :: !after_filters
|
|
|
|
|
|
method add_after_generation (f : unit -> unit) : unit =
|
|
|
- after_generation <- f :: after_generation
|
|
|
+ after_generation := f :: !after_generation
|
|
|
|
|
|
method add_null_safety_report (f : (string*pos) list -> unit) : unit =
|
|
|
null_safety_report <- f :: null_safety_report
|
|
|
|
|
|
+ method run r =
|
|
|
+ match !r with
|
|
|
+ | [] ->
|
|
|
+ ()
|
|
|
+ | l ->
|
|
|
+ r := [];
|
|
|
+ List.iter (fun f -> f()) (List.rev l);
|
|
|
+ self#run r
|
|
|
+
|
|
|
method get_before_typer_create = before_typer_create
|
|
|
method get_after_init_macros = after_init_macros
|
|
|
method get_after_typing = after_typing
|