blob: 47b65abba8ad983d3bf9f7f55c0b76f7169790fe (
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
|
(* TEST
flags = " -w -a "
* setup-ocamlc.byte-build-env
** ocamlc.byte
*** check-ocamlc.byte-output
*)
module A = struct
module type A_S = sig
end
type t = (module A_S)
end
module type S = sig type t end
let f (type a) (module X : S with type t = a) = ()
let _ = f (module A) (* ok *)
module A_annotated_alias : S with type t = (module A.A_S) = A
let _ = f (module A_annotated_alias) (* ok *)
let _ = f (module A_annotated_alias : S with type t = (module A.A_S)) (* ok *)
module A_alias = A
module A_alias_expanded = struct include A_alias end
let _ = f (module A_alias_expanded : S with type t = (module A.A_S)) (* ok *)
let _ = f (module A_alias_expanded) (* ok *)
let _ = f (module A_alias : S with type t = (module A.A_S)) (* doesn't type *)
let _ = f (module A_alias) (* doesn't type either *)
|