It reuses the .hi files already built for other modules. Those aren't in the source directory but under a build directory. If they don't exist there, it will build the dependencies to create them.

On Tue, Oct 8, 2019 at 10:57 AM Sam Halliday <sam.halliday@gmail.com> wrote:
Brandon Allbery <allbery.b@gmail.com> writes:

> It's doing what you — but not ghc — consider "extra work", though. ghc
> expects to be compiling code, and doesn't have a separate code path for
> "load symbols from an external module by parsing its source code" instead
> of "load symbols from an external module by loading its .hsc file and
> object code", aside from HscInterpreted.


I'm confused: it sounds like you saying that only HscInterpreted can
load symbols of dependencies from object code. Then how does cabal+ghc
do this when I make a change to one file in my project and do a
recompile of the package?

BTW, I am seeing modules going through CodeGen that are not part of the
file's dependency graph... LoadUpTo is behaving more like LoadAll.

--
Best regards,
Sam


--
brandon s allbery kf8nh
allbery.b@gmail.com