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
54
55
56
57
|
(* TEST
expect;
*)
type (_, _) comp =
| Eq : ('a, 'a) comp
| Diff : ('a, 'b) comp
;;
module U = struct type t = T end;;
module M : sig
type t = T
val comp : (U.t, t) comp
end = struct
include U
let comp = Eq
end;;
match M.comp with | Diff -> false;;
[%%expect{|
type (_, _) comp = Eq : ('a, 'a) comp | Diff : ('a, 'b) comp
module U : sig type t = T end
module M : sig type t = T val comp : (U.t, t) comp end
Line 16, characters 0-33:
16 | match M.comp with | Diff -> false;;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Warning 8 [partial-match]: this pattern-matching is not exhaustive.
Here is an example of a case that is not matched:
Eq
Exception: Match_failure ("", 16, 0).
|}];;
module U = struct type t = {x : int} end;;
module M : sig
type t = {x : int}
val comp : (U.t, t) comp
end = struct
include U
let comp = Eq
end;;
match M.comp with | Diff -> false;;
[%%expect{|
module U : sig type t = { x : int; } end
module M : sig type t = { x : int; } val comp : (U.t, t) comp end
Line 11, characters 0-33:
11 | match M.comp with | Diff -> false;;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Warning 8 [partial-match]: this pattern-matching is not exhaustive.
Here is an example of a case that is not matched:
Eq
Exception: Match_failure ("", 11, 0).
|}];;
|