File: assume_no_perform_unhandled.ml

package info (click to toggle)
js-of-ocaml 6.2.0-1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 37,932 kB
  • sloc: ml: 135,957; javascript: 58,364; ansic: 437; makefile: 422; sh: 12; perl: 4
file content (25 lines) | stat: -rw-r--r-- 585 bytes parent folder | download | duplicates (2)
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
open Effect
open Effect.Deep

type _ Effect.t += Dummy : unit t

let must_raise () =
  try_with
    (fun () ->
      Jsoo_runtime.Effect.assume_no_perform (fun () ->
          (* Should raise [Effect.Unhandled] despite the installed handler *)
          perform Dummy))
    ()
    { effc =
        (fun (type a) (e : a Effect.t) ->
          match e with
          | Dummy -> Some (fun (k : (a, _) continuation) -> continue k ())
          | _ -> None)
    }

let () =
  try
    must_raise ();
    print_endline "failed";
    exit 2
  with Effect.Unhandled Dummy -> print_endline "ok"