$ cat foo.mli
type t

$ cat foo.ml
type t = {a:int} [@@deriving fields]

$ ocamlfind ocamlc -package ppx_fields_conv,fieldslib -w A -c foo.mli

$ ocamlfind ocamlc -package ppx_fields_conv,fieldslib -w A -c foo.ml
File "foo.ml", line 1, characters 5-6:
Warning 32: unused value names.
File "foo.ml", line 1, characters 5-6:
Warning 32: unused value make_creator.
File "foo.ml", line 1, characters 5-6:
Warning 32: unused value create.
File "foo.ml", line 1, characters 5-6:
Warning 32: unused value map.
File "foo.ml", line 1, characters 5-6:
Warning 32: unused value iter.
File "foo.ml", line 1, characters 5-6:
Warning 32: unused value fold.
File "foo.ml", line 1, characters 5-6:
Warning 32: unused value map_poly.
File "foo.ml", line 1, characters 5-6:
Warning 32: unused value for_all.
File "foo.ml", line 1, characters 5-6:
Warning 32: unused value exists.
File "foo.ml", line 1, characters 5-6:
Warning 32: unused value to_list.
File "foo.ml", line 1, characters 5-6:
Warning 32: unused value iter.
File "foo.ml", line 1, characters 5-6:
Warning 32: unused value fold.
File "foo.ml", line 1, characters 5-6:
Warning 32: unused value set_all_mutable_fields.

Thus, I'd like to disable warning 32, but only for the items generated by the ppx extension. I've tried adding [@@warning "-32"] in various places but it understandably doesn't work. So then I tried defining an internal module and disabling in the entire module like this:

$ cat foo.ml
module T = struct
  [@@warning "-32"]
  type t = {a:int} [@@deriving fields]
end
include T

However I get a syntax error, even though this follows the example of the manual in section 7.221. Is this a bug in the manual? According to the grammar it seems the attribute should be added after the module expression:

$ cat foo.ml
module T = struct
  type t = {a:int} [@@deriving fields]
end [@@warning "-32"]

include T

This compiles, but the warnings don't go away. Is there a solution?