From 1b0b42c7e032b30a408d8bae152b2fd426ef8cb4 Mon Sep 17 00:00:00 2001 From: Thibault Martin <thi.martin.pro@pm.me> Date: Thu, 5 Sep 2024 13:43:53 +0200 Subject: [PATCH] [kernel] Register extensions in early stage --- src/kernel_internals/typing/unfold_loops.ml | 8 +++++++- src/kernel_services/ast_queries/dyncall.ml | 20 +++++++++----------- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src/kernel_internals/typing/unfold_loops.ml b/src/kernel_internals/typing/unfold_loops.ml index 73a2552df72..04d0a147953 100644 --- a/src/kernel_internals/typing/unfold_loops.ml +++ b/src/kernel_internals/typing/unfold_loops.ml @@ -757,5 +757,11 @@ let unroll_typer (ctxt: Logic_typing.typing_context) (_loc:location) args = Lenv.empty () |> append_here_label |> append_init_label |> append_pre_label in Ext_terms (List.map (ctxt.type_term ctxt env) args) -let () = Acsl_extension.register_code_annot_next_loop +let register_extensions () = + Acsl_extension.register_code_annot_next_loop ~plugin:"kernel" "unfold" unroll_typer false + +let register_once, _ = + State_builder.apply_once "Unfold_loops.register_extensions" [] register_extensions + +let () = Cmdline.run_after_early_stage register_once diff --git a/src/kernel_services/ast_queries/dyncall.ml b/src/kernel_services/ast_queries/dyncall.ml index 33c4789286e..15a73179dc9 100644 --- a/src/kernel_services/ast_queries/dyncall.ml +++ b/src/kernel_services/ast_queries/dyncall.ml @@ -250,15 +250,13 @@ let get ?bhv stmt = (* --- Registry --- *) (* -------------------------------------------------------------------------- *) -let register = - let once = ref false in - fun () -> - if (not !once) then begin - once := true; - Acsl_extension.register_code_annot_next_stmt ~plugin:"kernel" - "calls" typecheck true ; - Acsl_extension.register_behavior ~plugin:"kernel" - "instanceof" typecheck true ; - end +let register_extensions () = + Acsl_extension.register_code_annot_next_stmt ~plugin:"kernel" + "calls" typecheck true; + Acsl_extension.register_behavior ~plugin:"kernel" + "instanceof" typecheck true + +let register_once, _ = + State_builder.apply_once "Dyncall.register_extensions" [] register_extensions -let () = Cmdline.run_after_configuring_stage register +let () = Cmdline.run_after_early_stage register_once -- GitLab