File: pr7253.ml

package info (click to toggle)
ocaml 5.3.0-3
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 43,124 kB
  • sloc: ml: 355,439; ansic: 51,636; sh: 25,098; asm: 5,413; makefile: 3,673; python: 919; javascript: 273; awk: 253; perl: 59; fortran: 21; cs: 9
file content (15 lines) | stat: -rw-r--r-- 506 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
(* TEST *)

(* MPR#7253: "at_exit functions get called twice if a callback raises
   and prevents earlier handlers to execute." *)

exception My_exception

let () =
  Printexc.set_uncaught_exception_handler (fun exn bt ->
    match exn with
    | My_exception -> print_endline "Caught"; exit 0
    | _ -> print_endline "Unexpected uncaught exception");
  at_exit (fun () -> print_endline "Last");
  at_exit (fun () -> print_endline "Raise"; raise My_exception);
  at_exit (fun () -> print_endline "First")