Commit 927b3cbb authored by simonpj's avatar simonpj
Browse files

[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.
parent 3f694c56
......@@ -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,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment