(* TEST
 expect;
*)

[@@@ ocaml.warning "+4"]
module rec X : sig
  type t = int * bool
end = struct
  type t = A | B
  let f = function A | B -> 0
end;;
[%%expect{|
Lines 4-7, characters 6-3:
4 | ......struct
5 |   type t = A | B
6 |   let f = function A | B -> 0
7 | end..
Error: Signature mismatch:
       Modules do not match:
         sig type t = X.t = A | B val f : t -> int end
       is not included in
         sig type t = int * bool end
       Type declarations do not match:
         type t = X.t = A | B
       is not included in
         type t = int * bool
       The type "X.t" is not equal to the type "int * bool"
|}];;
