Here’s an odd bug I’m seeing which seems to have something to do with lens.ppx_deriving.
I have this code (somewhat simplified):
[%%transform
module Foo = struct
type t = int
end]
where %%transform generates
module Foo = struct
type t = int [@@deriving bar]
end
where bar is a deriver I’ve written. In most cases, that works fine. But if the dune preprocessing list includes lens.ppx_deriving, the deriver bar is not applied. Strangely, if I omit %%transform, and enter deriving bar manually, then bar is applied. Removing lens.ppx_deriving fixes the problem. Of course, I need that for some code.
What could cause the interaction between lens.ppx_deriving and my own deriver?