(* TEST flags = " -w +A -strict-sequence " * expect *) module A = struct type foo end;; [%%expect {| module A : sig type foo end |}] module rec B : sig open A type bar = Bar of foo end = B;; [%%expect {| module rec B : sig type bar = Bar of A.foo end |}] module rec C : sig open A end = C;; [%%expect {| Line 2, characters 2-8: 2 | open A ^^^^^^ Warning 33 [unused-open]: unused open A. module rec C : sig end |}] module rec D : sig module M : module type of struct module X : sig end = struct open A let None = None end end end = D;; [%%expect {| Line 5, characters 10-14: 5 | let None = None ^^^^ Warning 8 [partial-match]: this pattern-matching is not exhaustive. Here is an example of a case that is not matched: Some _ Line 4, characters 6-12: 4 | open A ^^^^^^ Warning 33 [unused-open]: unused open A. module rec D : sig module M : sig module X : sig end end end |}]