[Haskell-cafe] Target Selection in HaRe

AlanKim Zimmerman alan.zimm at gmail.com
Tue Jan 14 10:04:03 UTC 2014

The Haskell Refactorer now makes use of the GHC API to load and typecheck
the code to be refactored.

It uses ghc-mod internally to identify a project cabal file, and extract
the targets in it.

The current code attempts to load all the targets into the module graph, to
make sure that when a project is refactored the ancillary parts such as
tests and benchmarks are refactored too, e.g. when renaming a function.

The problem is that GHC is unable to load more than one main file.

I am trying to decide on the best way of resolving this in terms of a user
of HaRe, where it should 'just work' most of the time. The actual
refactoring is done by calling the HaRe executable with command line

Options that seem viable are

1. require the names of the target(s) to be loaded to be passed in as
command line arguments.

This means the IDE integration is going to have to provide a way of
deciding the scope of the refactoring.

2. Create a config file that lives in the project directory and specifies
the targets to be loaded

3. Try to build up a union of the module graph for all the targets,
excluding all main modules.

The problem with this is that it then becomes difficult to refactor a main

4. A different option, or blend of the above.e.g. load the union but
specify the specific main module.

Does anyone have any preferences in terms of this?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20140114/e55a4b0b/attachment.html>

More information about the Haskell-Cafe mailing list