[project @ 2002-01-24 16:55:35 by simonmar]
[ghc-hetmet.git] / ghc / compiler / rename / Rename.lhs
index c99a63a..e49f9fb 100644 (file)
@@ -6,7 +6,7 @@
 \begin{code}
 module Rename ( 
        renameModule, renameStmt, renameRdrName, mkGlobalContext,
-       closeIfaceDecls, checkOldIface 
+       closeIfaceDecls, checkOldIface, slurpIface
   ) where
 
 #include "HsVersions.h"
@@ -243,6 +243,31 @@ getModuleExports mod =
 
 %*********************************************************
 %*                                                      *
+\subsection{Slurp in a whole module eagerly}
+%*                                                      *
+%*********************************************************
+
+\begin{code}
+slurpIface
+       :: DynFlags -> HomeIfaceTable -> HomeSymbolTable
+       -> PersistentCompilerState -> Module
+       -> IO (PersistentCompilerState, PrintUnqualified, 
+              Maybe ([Name], [RenamedHsDecl]))
+slurpIface dflags hit hst pcs mod = 
+  renameSource dflags hit hst pcs iNTERACTIVE $
+
+    let mod_name = moduleName mod
+    in
+    loadInterface contextDoc mod_name ImportByUser `thenRn` \ iface ->
+    let fvs = availsToNameSet [ avail | (mn,avails) <- mi_exports iface, 
+                                       avail <- avails ]
+    in
+    slurpImpDecls fvs  `thenRn` \ rn_imp_decls ->
+    returnRn (alwaysQualify, Just (nameSetToList fvs, rn_imp_decls))
+\end{code}
+
+%*********************************************************
+%*                                                      *
 \subsection{The main function: rename}
 %*                                                      *
 %*********************************************************