(* TEST * expect *) type ('a, 'b) eq = Refl : ('a, 'a) eq type empty = (int, string) eq let f = function `Foo (_ : empty) -> . [%%expect{| type ('a, 'b) eq = Refl : ('a, 'a) eq type empty = (int, string) eq val f : [< `Foo of empty ] -> 'a = |}]