Change the representation of export lists in .hi files
authorSimon Peyton Jones <simonpj@microsoft.com>
Tue, 2 Aug 2011 09:43:57 +0000 (10:43 +0100)
committerSimon Peyton Jones <simonpj@microsoft.com>
Tue, 2 Aug 2011 09:43:57 +0000 (10:43 +0100)
commitfe44af73d58839e3010e1234cece0dd6c33f7eb5
treef336f9bf5b185440920c30b7875989d56565fcad
parent428f8c3dbe74645e0560fc6003bf2891229d28a7
Change the representation of export lists in .hi files

Currently export list in .hi files are partitioned by module
  export M T(C1,C2)
         N f,g
In each list we only have OccNames, all assumed to come from
the parent module M or N resp.

This patch changes the representatation so that export lists
have full Names:
  export M.T(M.C1,M.C2), N.f, N.g

Numerous advatages
  * AvailInfo no longer needs to be parameterised; it always
    contains Names

  * Fixes Trac #5306.  This was the main provocation

  * Less to-and-fro conversion when reading interface files

It's all generally simpler.  Interface files should not get bigger,
becuase they have a nice compact representation for Names.
compiler/basicTypes/Name.lhs
compiler/iface/BinIface.hs
compiler/iface/IfaceEnv.lhs
compiler/iface/LoadIface.lhs
compiler/iface/MkIface.lhs
compiler/main/HscTypes.lhs
compiler/prelude/PrelInfo.lhs
compiler/rename/RnEnv.lhs
compiler/rename/RnNames.lhs
compiler/rename/RnSource.lhs