[project @ 1999-05-18 15:19:15 by simonpj]
Renamer changes ~~~~~~~~~~~~~~~ [The real commit preceded this, but had the stupid message "msg_rn" because I used "cvs commit -m" instead of "cvs commit -F"] Fairly substantial changes to the renamer: * opt_PruneTyDecls is gone, gone, gone. Hurrah. Ditto the 'deferred data decls' which was a bug farm. Instead, the compiler slurps in the transitive closure of all type declarations. It is nevertheless still parsimonious about slurping in instance decls and rewrite rules. * The renamer now uses the usage information stored in each interface file to figure out whether to look for A.hi or A.hi-boot when looking for a declaration for A.f (say). * Because of the above, there are no "A!f" symbols in interface files any more. However, the header of the interface file does contain a "!" to indicate that the mdoule contains "orphan" instance decls or rewrite rules. __interface Foo 3 ! 403 where Likewise, the usage info contains a "!" to indicate that the module mentioned has orphans: import Foo 3 ! :: a 1 b 7 ; * The renamer now only reads an interface looking for fixities if it finds an occurrence of an operator from that module. (Previously it pessimistically read the home modlese of all in-scope variables.) * Some flags have changed to more consistent names: -ddump-rn-stats (was -dshow-rn-stats) -ddump-rn-trace (was -dshow-rn-trace) * Exports now come before imports in interface files. (This was an un-forced change.) * The usage info is now explicit when a module imports the whole of another: import M 3 ; -- Imports the whole of M import M 3 :: a 2 b 7 ; -- Imports M.a, M.b import M 3 :: ; -- Imports nothing from M The last one is still vital to record that this module depends indirectly on M, even though it didn't use anything from M directly. * The renamer warns if you import {- SOURCE -} unnecessarily.
Please register or sign in to comment