From 9a473c43ff1b758adccae2d95aa5d62c64adf00e Mon Sep 17 00:00:00 2001 From: Virgile Prevosto <virgile.prevosto@m4x.org> Date: Fri, 15 Nov 2019 08:48:44 +0100 Subject: [PATCH] [logic] more precise error message when typing extension raises an exn --- src/kernel_services/ast_queries/logic_typing.ml | 8 +++++++- tests/spec/extend_extern.ml | 9 +++++++-- tests/spec/oracle/extend_extern.res.oracle | 1 + 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/kernel_services/ast_queries/logic_typing.ml b/src/kernel_services/ast_queries/logic_typing.ml index f855e465650..5920671ad02 100644 --- a/src/kernel_services/ast_queries/logic_typing.ml +++ b/src/kernel_services/ast_queries/logic_typing.ml @@ -544,7 +544,13 @@ module Extensions = struct with Not_found -> Kernel.fatal ~source:(fst loc) "unsupported clause of name '%s'" name in - status, typer ~typing_context ~loc p + try + status, typer ~typing_context ~loc p + with + | (Log.AbortError _ | Log.AbortFatal _) as exn -> raise exn + | exn -> + Kernel.fatal "Typechecking ACSL extension %s raised exception %s" + name (Printexc.to_string exn) end let register_behavior_extension name f = diff --git a/tests/spec/extend_extern.ml b/tests/spec/extend_extern.ml index 66629497432..c60a714b9bf 100644 --- a/tests/spec/extend_extern.ml +++ b/tests/spec/extend_extern.ml @@ -23,9 +23,14 @@ let main () = try Kernel.feedback "Checking handler of exception occurring in extension typing"; - Ast.compute (); Kernel.fatal "Extension typing should have failed" - with Not_found -> Kernel.feedback "Extension typing failed as expected" + Ast.compute (); assert false + with + | Log.AbortFatal _ -> Kernel.feedback "Extension typing failed as expected" + | Not_found -> Kernel.fatal "kernel did not capture our exception" + | Assert_failure _ -> Kernel.fatal "kernel silently captured our exception" let () = Kernel.TypeCheck.set false +let () = Kernel.Debug.set 1 + let () = Db.Main.extend main diff --git a/tests/spec/oracle/extend_extern.res.oracle b/tests/spec/oracle/extend_extern.res.oracle index a5e2e92faf2..3b7533295bb 100644 --- a/tests/spec/oracle/extend_extern.res.oracle +++ b/tests/spec/oracle/extend_extern.res.oracle @@ -1,3 +1,4 @@ [kernel] Checking handler of exception occurring in extension typing [kernel] Parsing tests/spec/extend_extern.i (no preprocessing) +[kernel] Failure: Typechecking ACSL extension why3 raised exception Not_found [kernel] Extension typing failed as expected -- GitLab