ocaml-ppx / ppx_import

Less redundancy in type declarations and signatures
MIT License
89 stars 28 forks source link

Changing type of record type's field. #86

Open aidmandorky opened 1 year ago

aidmandorky commented 1 year ago

Hello there, and many thanks for this wonderful extension. I am using ppx_import version 1.10.0. I just had a question about using the [@with] directive. My use case is that I have a module with a record type:

module A = struct
  type foo1 = Z.t

  type foo2 = { bla: Z.t }
end

And I want to convert both the Z.t types into int. in this situation, the following works:

module B = struct
  type bar = [%import: (A.foo1[@with Z.t := int])]
end

while this doesn't:

module C = struct
  type bar = [%import: (A.foo2[@with Z.t := int])]
end

raising the error:

Error: This variant or record definition does not match that of type
         A.foo2
       Fields do not match:
         bla : Z.t;
       is not the same as:
         bla : int;
       The type A.foo1 is not equal to the type int

Is this intended behaviour or am I doing something wrong?