ocaml-ppx / ppxlib

Base library and tools for ppx rewriters
MIT License
244 stars 94 forks source link

Refactor driver transformer #489

Open patricoferris opened 2 months ago

patricoferris commented 2 months ago

This builds on top of #482 after a conversation about the confusion around the Transform.t data structure and how it relates to ppxlib applying various preprocessors to OCaml code.

This PR changes the Transform.t from a record to a polymorphic variant with the intention to make it clearer how the driver works in terms of transforming code. Most notably, what was once accessing fields is now a lookup in a list where the list is always in the order of 10 elements (max).

As a newcomer to ppxlib, I find this approach a little easier to understand as there are more types and names to help guide a new developer, and the various kinds of passes are grouped under distinct types (rather than a big record where everything is optional).