Project.PassA program analysis pass.
Pass is essentially a function that takes a project data structures, and returns a new project, possibly modified.
Passes may depend on other passes, and have a few properties, associated with them.
type t = passAn error that can occur when loading or running pass.
Not_loaded name pass with a given name wasn't loaded for some reason. This is a very unlikely error, indicating either a logic error in the plugin system implementation or something very weird, that we didn't expect.Not_loaded name when we tried to load plugin with a given name we failed to find it in our search paths.Runtime_error (name,exn) when plugin with a given name was run it raised an exn.val sexp_of_error : error -> Ppx_sexp_conv_lib.Sexp.texception Failed of errorraised when a pass failed to load or to run. Note: this exception is raised only from two functions in this module, that state this in their documentation and has _exn suffix in their name.
val run : t -> project -> (project, error) Core_kernel.Result.trun_pass project pass applies pass to a project.
If a pass has dependencies, then they will be run before the pass in some topological order.
run_pass_exn proj is the same as run_pass, but raises an exception on error. Useful to provide custom error handling/printing.
val name : t -> stringname pass is a pass name
val autorun : t -> boolautorun pass is true if a pass was created with autorun option