type 'a t = 'a Original.t = T type 'a ti = 'a Original.t let f: (module Original.T with type t = int) -> unit = fun _ -> () let x = (module struct type t end: Original.T ) let g: (module Original.T) -> unit = fun _ -> () type pack1 = (module Original.T with type t = int) module type T = sig module M : Original.T end type pack2 = (module T with type M.t = int) (* Check the detection of type kind in type-directed disambiguation. *) type r = Original.r = { x:unit } let r = Original.r type s = Original.s = S let s = Original.s (* Check expansion in gadt *) type ('a,'b) gadt = | G: ('a, 'a ti) gadt type 'a is_int = 'a Original.is_int = Is_int : int is_int