Skip to content

Allow API clients to use GhcMake.downsweep directly

Daniel Gröber (dxld) requested to merge DanielG/ghc:partial-downsweep into master

This changeset allows API clients to directly interact with downsweep instead of going through depanal and fixes some annoying problems along the way.

The main problem with using depanal is it doesn't return a module graph if any module has a problem during downsweep.

From the perspective of tooling such as Haskell-IDE-Engine: Say the user is in the middle of performing a complicated change on multiple Haskell modules in their IDE, then it is very bad UX for tooling to just suddenly stop working or even crash for modules unrelated to the one with the error when any module in the module graph currently has a downsweep level problem.

Please also refer to the individual commits which have more detailed commentary.

This branch is based on !1014 (closed) since there is some overlap in preprocessFile I'm not sure I can make the commits from that MR not show up for review here somehow?

This MR is part of my GSoC19 project A stronger foundation for interactive Haskell tooling, specifically Task 1.2 in my proposal (pdf).

Edited by Daniel Gröber (dxld)

Merge request reports