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
|
(* TEST
expect;
*)
type _ eff += A: 'a -> int eff
[%%expect {|
type _ eff += A : 'a -> int eff
|}]
let () = match () with
| () -> ()
| effect A k, k -> ()
[%%expect {|
Line 3, characters 13-14:
3 | | effect A k, k -> ()
^
Error: Variable "k" is bound several times in this matching
|}]
let () = match () with
| () -> raise Not_found
| effect A _, k -> k
[%%expect {|
Line 3, characters 21-22:
3 | | effect A _, k -> k
^
Error: The value "k" has type "(%eff, unit) continuation"
but an expression was expected of type "unit"
|}]
let () = match () with
| () -> ()
| effect A, [k] -> ()
[%%expect {|
Line 3, characters 14-17:
3 | | effect A, [k] -> ()
^^^
Error: Invalid continuation pattern: only variables and _ are allowed .
|}]
let () = match [] with
| _ -> ()
| [effect A, k] -> ()
[%%expect {|
Line 3, characters 5-16:
3 | | [effect A, k] -> ()
^^^^^^^^^^^
Error: Effect patterns must be at the top level of a match case.
|}]
|