GHC API: expose separate compilation stages
The GHC API is currently hard to use for certain things: extracting the output from various compilation stages; or "hooking in" to the compilation pipeline. The
checkModule function works for some uses, but it doesn't let you extract Core, for example, and it doesn't complete the compilation and inject the result into the
Session, so the module still has to be compiled.
One way to solve this would be to abstract the compilation pipeline as a series of functions, so that the user could script the compiler. We haven't worked out the details, but in principle it should be possible to write a GHC API client that invokes the following steps:
- parse a module
- generate code
and can then inject the compilation results back into the
Session for use by future compilations. Each individual stage should provide a result that can be inspected: get the renamed/typechecked code out, get the Core, and so on.
checkModule could be built on top of such an interface, but the interface would allow much more flexibility.