[project @ 2000-02-22 12:45:30 by panne]
authorpanne <unknown>
Tue, 22 Feb 2000 12:45:30 +0000 (12:45 +0000)
committerpanne <unknown>
Tue, 22 Feb 2000 12:45:30 +0000 (12:45 +0000)
Space leak paranoia: Don't keep whole InterfaceDetails alive
throughout the middle part of the compiler

ghc/compiler/main/Main.lhs
ghc/compiler/main/MkIface.lhs

index 6902a18..c0b2066 100644 (file)
@@ -20,6 +20,7 @@ import Lex            ( PState(..), P, ParseResult(..) )
 import SrcLoc          ( mkSrcLoc )
 
 import Rename          ( renameModule )
+import RnMonad         ( InterfaceDetails(..) )
 
 import MkIface         ( startIface, ifaceDecls, endIface )
 import TcModule                ( TcResults(..), typecheckModule )
@@ -123,7 +124,8 @@ doIt (core_cmds, stg_cmds)
                        reportCompile mod_name "Compilation NOT required!" >>
                        return ();
        
-       Just (this_mod, rn_mod, iface_file_stuff, rn_name_supply, imported_modules) ->
+       Just (this_mod, rn_mod, iface_file_stuff@(InterfaceDetails _ _ _ deprecations),
+             rn_name_supply, imported_modules) ->
                        -- Oh well, we've got to recompile for real
 
 
@@ -187,8 +189,8 @@ doIt (core_cmds, stg_cmds)
 --     thoroughout code generation
 
     ifaceDecls if_handle local_tycons local_classes inst_info
-              final_ids tidy_binds imp_rule_ids iface_file_stuff       >>
-    endIface if_handle                                                 >>
+              final_ids tidy_binds imp_rule_ids deprecations   >>
+    endIface if_handle                                         >>
            -- We are definitely done w/ interface-file stuff at this point:
            -- (See comments near call to "startIface".)
 
index 50a83d8..6edc9d5 100644 (file)
@@ -90,7 +90,7 @@ ifaceDecls :: Maybe Handle
           -> [Id]              -- Ids used at code-gen time; they have better pragma info!
           -> [CoreBind]        -- In dependency order, later depend on earlier
           -> [ProtoCoreRule]   -- Rules
-          -> InterfaceDetails
+          -> [Deprecation Name]
           -> IO ()
 
 endIface    :: Maybe Handle -> IO ()
@@ -127,7 +127,7 @@ ifaceDecls (Just hdl)
           final_ids
           binds
           orphan_rules         -- Rules defined locally for an Id that is *not* defined locally
-          (InterfaceDetails _ _ _ deprecations)
+          deprecations
   | null_decls = return ()              
        --  You could have a module with just (re-)exports/instances in it
   | otherwise