[project @ 1999-05-18 15:19:15 by simonpj]
authorsimonpj <unknown>
Tue, 18 May 1999 15:19:15 +0000 (15:19 +0000)
committersimonpj <unknown>
Tue, 18 May 1999 15:19:15 +0000 (15:19 +0000)
commit927b3cbb22ce99e09ee81afa682f125982af7214
tree76e1c46d0521e51460c23d44353bea489ffed14c
parent3f694c56bd5e30ac60cc26645e53ab865ff14d39
[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.
ghc/compiler/rename/Rename.lhs