(* TEST flags = " -w +A -strict-sequence "; expect; *) type t = A : t;; [%%expect {| type t = A : t |}] module X1 : sig end = struct let _f ~x (* x unused argument *) = function | A -> let x = () in x end;; [%%expect {| Line 2, characters 10-11: 2 | let _f ~x (* x unused argument *) = function ^ Warning 27 [unused-var-strict]: unused variable "x". module X1 : sig end |}] module X2 : sig end = struct let x = 42 (* unused value *) let _f = function | A -> let x = () in x end;; [%%expect {| Line 2, characters 6-7: 2 | let x = 42 (* unused value *) ^ Warning 32 [unused-value-declaration]: unused value "x". module X2 : sig end |}] module X3 : sig end = struct module O = struct let x = 42 (* unused *) end open O (* unused open *) let _f = function | A -> let x = () in x end;; [%%expect {| Line 2, characters 24-25: 2 | module O = struct let x = 42 (* unused *) end ^ Warning 32 [unused-value-declaration]: unused value "x". Line 3, characters 2-8: 3 | open O (* unused open *) ^^^^^^ Warning 33 [unused-open]: unused open "O". module X3 : sig end |}]