From 714a13d3da80f372d8ed16174e91fe01972edf12 Mon Sep 17 00:00:00 2001 From: Virgile Prevosto <virgile.prevosto@m4x.org> Date: Fri, 8 Nov 2019 14:57:46 +0100 Subject: [PATCH] [test] test case for reported issue --- tests/spec/extend_extern.i | 7 +++++++ tests/spec/extend_extern.ml | 22 ++++++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 tests/spec/extend_extern.i create mode 100644 tests/spec/extend_extern.ml diff --git a/tests/spec/extend_extern.i b/tests/spec/extend_extern.i new file mode 100644 index 00000000000..8dffe226177 --- /dev/null +++ b/tests/spec/extend_extern.i @@ -0,0 +1,7 @@ +/* run.config + MACRO: PTEST_MAKE_MODULE make FRAMAC_USER_OFLAGS="-package why3" FRAMAC_USER_BFLAGS="-package why3" + MODULE: @PTEST_DIR@/@PTEST_NAME@.cmxs + OPT: + */ +/*@ predicate load(char * x) = \true ; */ +/*@ why3 load("List"); */ diff --git a/tests/spec/extend_extern.ml b/tests/spec/extend_extern.ml new file mode 100644 index 00000000000..70f1ad660c2 --- /dev/null +++ b/tests/spec/extend_extern.ml @@ -0,0 +1,22 @@ +open Logic_typing +open Cil_types + +let load_theory = function + | { pred_content = Papp (_, [], [ { term_node = TConst(LStr _name) } ] ) } -> + let open Why3 in ignore ( + Theory.import_namespace Theory.empty_ns [_name] + ) + | _ -> assert false + +let typing ~typing_context ~loc lexprs = + ignore loc ; + let type_predicate = + typing_context.type_predicate typing_context (Lenv.empty ()) + in + let predicates = List.map type_predicate lexprs in + List.iter load_theory predicates ; + Ext_preds predicates + + +let () = + Logic_typing.register_global_extension "why3" false typing -- GitLab