aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/cErrors.ml15
-rw-r--r--lib/cErrors.mli2
-rw-r--r--lib/control.ml2
-rw-r--r--lib/pp.ml6
4 files changed, 9 insertions, 16 deletions
diff --git a/lib/cErrors.ml b/lib/cErrors.ml
index 323dc8c1a4..a23cf3aaf1 100644
--- a/lib/cErrors.ml
+++ b/lib/cErrors.ml
@@ -79,7 +79,7 @@ let is_anomaly = function
(** Printing of additional error info, from Exninfo *)
let additional_error_info_handler = ref []
-let register_additional_error_info (f : Exninfo.info -> (Pp.t option Loc.located) option) =
+let register_additional_error_info (f : Exninfo.info -> (Pp.t Loc.located) option) =
additional_error_info_handler := f :: !additional_error_info_handler
(** [print_gen] is a general exception printer which tries successively
@@ -93,18 +93,15 @@ let rec print_gen ~anomaly ~extra_msg stk e =
| h::stk' ->
match h e with
| Some err_msg ->
- Option.cata (fun msg -> msg ++ err_msg) err_msg extra_msg
+ extra_msg ++ err_msg
| None ->
print_gen ~anomaly ~extra_msg stk' e
let print_gen ~anomaly (e, info) =
- let extra_info =
- try CList.find_map (fun f -> Some (f info)) !additional_error_info_handler
- with Not_found -> None
- in
- let extra_msg = match extra_info with
- | None -> None
- | Some (loc, msg) -> msg
+ let extra_msg =
+ CList.map_filter (fun f -> f info) !additional_error_info_handler
+ (* Location info in the handler is ignored *)
+ |> List.map snd |> Pp.seq
in
try
print_gen ~anomaly ~extra_msg !handle_stack e
diff --git a/lib/cErrors.mli b/lib/cErrors.mli
index ec81694177..f9c84b001c 100644
--- a/lib/cErrors.mli
+++ b/lib/cErrors.mli
@@ -75,5 +75,5 @@ val noncritical : exn -> bool
exceptions. This method is fragile and should be considered
deprecated *)
val register_additional_error_info
- : (Exninfo.info -> (Pp.t option Loc.located) option)
+ : (Exninfo.info -> Pp.t Loc.located option)
-> unit
diff --git a/lib/control.ml b/lib/control.ml
index e67e88ee95..1898eab89e 100644
--- a/lib/control.ml
+++ b/lib/control.ml
@@ -75,8 +75,8 @@ let windows_timeout n f x e =
if not !exited then begin killed := true; raise Sys.Break end
else raise e
| e ->
- let () = killed := true in
let e = Exninfo.capture e in
+ let () = killed := true in
Exninfo.iraise e
type timeout = { timeout : 'a 'b. int -> ('a -> 'b) -> 'a -> exn -> 'b }
diff --git a/lib/pp.ml b/lib/pp.ml
index 1bd160dcda..f9b6ef20bf 100644
--- a/lib/pp.ml
+++ b/lib/pp.ml
@@ -201,11 +201,7 @@ let pp_with ft pp =
pp_cmd s;
pp_close_tag ft () [@warning "-3"]
in
- try pp_cmd pp
- with reraise ->
- let reraise = Exninfo.capture reraise in
- let () = Format.pp_print_flush ft () in
- Exninfo.iraise reraise
+ pp_cmd pp
(* If mixing some output and a goal display, please use msg_warning,
so that interfaces (proofgeneral for example) can easily dispatch