blob: 6f9fc0af448773f46d845345bc07e643e4658027 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
(* TEST_BELOW
(* Blank lines added here to preserve locations. *)
*)
exception Exn
let return_exn ?(raise_it_instead=false) () =
if raise_it_instead then
raise Exn
else
Exn
[@@inline never]
let without_reraise () =
match return_exn () with
| Exn as exn
| exception (Exn as exn) ->
raise exn
| _ -> assert false
let with_reraise () =
match return_exn ~raise_it_instead:true () with
| Exn as exn
| exception (Exn as exn) ->
raise exn
| _ -> assert false
let trickier () =
try raise Not_found
with e ->
match return_exn () with
| Exn as exn
| exception (Exn as exn) ->
raise exn
| _ -> assert false
let run f =
try f ()
with exn ->
Printf.printf "exception %s\n" (Printexc.to_string exn);
Printexc.print_backtrace stdout;
Printf.printf "---------------------------\n%!"
let _ =
run without_reraise;
run with_reraise;
run trickier
(* TEST
flags = "-g";
ocamlrunparam += ",b=1";
*)
|