[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)
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

index 5720007..bc01d7c 100644 (file)
@@ -10,7 +10,9 @@ module Rename ( renameModule ) where
 
 import HsSyn
 import RdrHsSyn                ( RdrNameHsModule )
-import RnHsSyn         ( RenamedHsModule, RenamedHsDecl, extractHsTyNames, extractHsCtxtTyNames )
+import RnHsSyn         ( RenamedHsModule, RenamedHsDecl, 
+                         extractHsTyNames, extractHsCtxtTyNames
+                       )
 
 import CmdLineOpts     ( opt_HiMap, opt_D_dump_rn_trace,
                          opt_D_dump_rn, opt_D_dump_rn_stats,