The library generates code from haskell-src-exts AST.
The procedure is as follows:
- pretty-print AST generated by
haskell-src-exts - parse the generated code to get
SrcSpanInfofor each node - combine AST annotated with comments and AST annotated with
SrcSpanInfo - insert (non-empty) comments into each node, updating
SrcSpanInfoof all nodes - profit!
As you can see, the algorithm is nor remarkably fast, because it prints and parses code
and modifies SrcSpanInfo of all nodes in an AST on each comment insertion.
On the good side, it is quite flexible and compatible with many versions of haskell-src-exts.
Performance is also acceptable if you don't need to invoke it every millisecond.