recordLocalSlurps,
mkImportInfo,
- slurpImpDecls,
+ slurpImpDecls, closeDecls,
RecompileRequired, outOfDate, upToDate, recompileRequired
)
import CmdLineOpts ( DynFlags, opt_NoPruneDecls, opt_NoPruneTyDecls, opt_IgnoreIfacePragmas )
import HscTypes
-import HsSyn ( HsDecl(..), InstDecl(..), HsType(..) )
+import HsSyn ( HsDecl(..), Sig(..), TyClDecl(..), ConDecl(..), ConDetails(..),
+ InstDecl(..), HsType(..), hsTyVarNames, getBangType
+ )
import HsImpExp ( ImportDecl(..) )
-import BasicTypes ( Version, defaultFixity )
import RdrHsSyn ( RdrNameHsDecl, RdrNameTyClDecl, RdrNameInstDecl )
+import RnHsSyn ( RenamedHsDecl, extractHsTyNames, extractHsCtxtTyNames, tyClDeclFVs )
import RnHiFiles ( tryLoadInterface, loadHomeInterface, loadInterface,
loadOrphanModules
)
import RnSource ( rnTyClDecl, rnDecl )
import RnEnv
import RnMonad
+import Id ( idType )
+import Type ( namesOfType )
+import TyCon ( isSynTyCon, getSynTyConDefn )
import Name ( Name {-instance NamedThing-}, nameOccName,
- nameModule, isLocallyDefined,
+ nameModule, isLocallyDefined, nameUnique,
NamedThing(..),
elemNameEnv
)
extendModuleEnv_C, lookupWithDefaultModuleEnv
)
import NameSet
-import PrelInfo ( wiredInThingEnv )
+import PrelInfo ( wiredInThingEnv, fractionalClassKeys )
+import TysWiredIn ( doubleTyCon )
import Maybes ( orElse )
import FiniteMap
import Outputable
@getInterfaceExports@ is called only for directly-imported modules.
\begin{code}
-getInterfaceExports :: ModuleName -> WhereFrom -> RnMG (Module, Avails)
+getInterfaceExports :: ModuleName -> WhereFrom -> RnMG (Module, [(ModuleName,Avails)])
getInterfaceExports mod_name from
= getHomeIfaceTableRn `thenRn` \ hit ->
case lookupModuleEnvByName hit mod_name of {
rnIfaceDecls (new_decl:decls) (fvs1 `plusFV` fvs) ds
rnIfaceDecl (mod, decl) = initIfaceRnMS mod (rnDecl decl)
-rnIfaceTyClDecl (mod, decl) = initIfaceRnMS mod (rnTyClDecl decl)
+rnIfaceTyClDecl (mod, decl) = initIfaceRnMS mod (rnTyClDecl decl) `thenRn` \ decl' ->
+ returnRn (decl', tyClDeclFVs decl')
\end{code}