From ac88b4ba6e3372b04d241f2e060ff79530c09d38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Loi=CC=88c=20Correnson?= <loic.correnson@cea.fr> Date: Thu, 18 Feb 2021 08:52:36 +0100 Subject: [PATCH] [logic] refine duplicate lemma error message --- src/kernel_services/ast_queries/logic_typing.ml | 9 +++++++-- tests/spec/oracle/axiom_redef_bts1005.res.oracle | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/kernel_services/ast_queries/logic_typing.ml b/src/kernel_services/ast_queries/logic_typing.ml index ca5511407cf..1789b851855 100644 --- a/src/kernel_services/ast_queries/logic_typing.ml +++ b/src/kernel_services/ast_queries/logic_typing.ml @@ -4191,9 +4191,14 @@ struct | LDlemma (x,labels, poly, {tp_kind = kind; tp_statement = e}) -> if Logic_env.Lemmas.mem x then begin let old_def = Logic_env.Lemmas.find x in + let old_kind = match old_def with + | Dlemma(_,_,_,{tp_kind },_,_) -> tp_kind + | _ -> Assert in let old_loc = Cil_datatype.Global_annotation.loc old_def in - C.error loc "lemma %s is already registered (%a)" - x Cil_datatype.Location.pretty old_loc + C.error loc "%a %s is already registered as %a (%a)" + Cil_printer.pp_lemma_kind kind x + Cil_printer.pp_lemma_kind old_kind + Cil_datatype.Location.pretty old_loc end; let labels,env = annot_env loc labels poly in let p = Logic_const.toplevel_predicate ~kind (predicate env e) in diff --git a/tests/spec/oracle/axiom_redef_bts1005.res.oracle b/tests/spec/oracle/axiom_redef_bts1005.res.oracle index d6bf2400ede..01b443473c6 100644 --- a/tests/spec/oracle/axiom_redef_bts1005.res.oracle +++ b/tests/spec/oracle/axiom_redef_bts1005.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing tests/spec/axiom_redef_bts1005.i (no preprocessing) [kernel:annot-error] tests/spec/axiom_redef_bts1005.i:5: Warning: - lemma inj1 is already registered (tests/spec/axiom_redef_bts1005.i:4). Ignoring global annotation + axiom inj1 is already registered as axiom (tests/spec/axiom_redef_bts1005.i:4). Ignoring global annotation /* Generated by Frama-C */ -- GitLab