From a97092012932bc2d16da2c8bc2f65fc401f9e932 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Correnson?= <loic.correnson@cea.fr> Date: Mon, 8 Jul 2024 16:30:33 +0200 Subject: [PATCH] [kernel] fix absolute names in imported modules --- src/kernel_services/ast_queries/acsl_extension.mli | 2 +- src/kernel_services/ast_queries/logic_typing.ml | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/kernel_services/ast_queries/acsl_extension.mli b/src/kernel_services/ast_queries/acsl_extension.mli index d5c76f546f..a8889b0899 100644 --- a/src/kernel_services/ast_queries/acsl_extension.mli +++ b/src/kernel_services/ast_queries/acsl_extension.mli @@ -173,7 +173,7 @@ val register_code_annot_next_both: register_extension New type and function symbols shall be created with `Cil.make_xxx` functions. The registered symbols {i will} be automatically prefixed with the name of - the imported module. + the imported module if necessary. The register module importer function might be invoked several times, typically when a given module is imported from several files. Although diff --git a/src/kernel_services/ast_queries/logic_typing.ml b/src/kernel_services/ast_queries/logic_typing.ml index f2158c1dc0..22360e6fe5 100644 --- a/src/kernel_services/ast_queries/logic_typing.ml +++ b/src/kernel_services/ast_queries/logic_typing.ml @@ -854,7 +854,9 @@ struct end let make_module_builder (decls : global_annotation list ref) moduleId = - let wrap = Printf.sprintf "%s::%s" moduleId in + let prefix = moduleId ^ "::" in + let wrap s = + if String.starts_with ~prefix s then s else prefix ^ s in let add_logic_ctor loc ct = ct.ctor_name <- wrap ct.ctor_name ; add_logic_ctor loc ct in -- GitLab