(* TEST * expect *) type t = T : t;; module M : sig type free = < bar : t -> unit; foo : free -> unit > end = struct class free = object (self : 'self) method foo self = () method bar T = self#foo self end end;; [%%expect{| type t = T : t module M : sig type free = < bar : t -> unit; foo : free -> unit > end |}]