import HsCore ( HsIdInfo(..), UfExpr(..), toUfExpr, toUfBndr )
import HsTypes ( toHsTyVars )
import BasicTypes ( Fixity(..), NewOrData(..),
- Version, bumpVersion, isLoopBreaker
+ Version, initialVersion, bumpVersion, isLoopBreaker
)
import RnMonad
import RnHsSyn ( RenamedInstDecl, RenamedTyClDecl )
import TcHsSyn ( TypecheckedRuleDecl )
import HscTypes ( VersionInfo(..), IfaceDecls(..), ModIface(..), ModDetails(..),
- TyThing(..), DFunId, TypeEnv, isTyClThing
+ TyThing(..), DFunId, TypeEnv, isTyClThing, Avails,
+ WhatsImported(..), GenAvailInfo(..), RdrAvailInfo,
+ ImportVersion
)
import CmdLineOpts
plusNameEnv, lookupNameEnv, emptyNameEnv, mkNameEnv,
extendNameEnv, lookupNameEnv_NF, nameEnvElts
)
+import OccName ( pprOccName )
import TyCon ( TyCon, getSynTyConDefn, isSynTyCon, isNewTyCon, isAlgTyCon,
tyConTheta, tyConTyVars, tyConDataCons, tyConFamilySize
)
import Type ( splitSigmaTy, tidyTopType, deNoteType )
import SrcLoc ( noSrcLoc )
import Outputable
+import Module ( ModuleName, moduleName )
import List ( partition )
+import IO ( IOMode(..), openFile, hClose )
\end{code}
%************************************************************************
\begin{code}
-writeIface :: Finder -> ModIface -> IO ()
-writeIface finder mod_iface
+--writeIface :: Finder -> ModIface -> IO ()
+writeIface {-finder-} mod_iface
= do { let filename = error "... find the right file..."
; if_hdl <- openFile filename WriteMode
; printForIface if_hdl (pprIface mod_iface)
<+> int opt_HiVersion
<+> ptext SLIT("where")
- , pprExports (mi_exports iface)
+ , pprExport (mi_exports iface)
, vcat (map pprUsage (mi_usages iface))
, pprIfaceDecls (vers_decls version_info)
, pprDeprecs (mi_deprecs iface)
]
where
- version_info = mi_version mod_iface
+ version_info = mi_version iface
exp_vers = vers_exports version_info
rule_vers = vers_rules version_info
\begin{code}
pprExport :: (ModuleName, Avails) -> SDoc
pprExport (mod, items)
- = hsep [ ptext SLIT("__export "), ppr mod, hsep (map upp_avail items) ] <> semi
+ = hsep [ ptext SLIT("__export "), ppr mod, hsep (map pp_avail items) ] <> semi
where
pp_avail :: RdrAvailInfo -> SDoc
pp_avail (Avail name) = pprOccName name
pp_avail (AvailTC name []) = empty
- pp_avail (AvailTC name ns) = hcat [pprOccName name, bang, upp_export ns']
+ pp_avail (AvailTC name ns) = hcat [pprOccName name, bang, pp_export ns']
where
bang | name `elem` ns = empty
| otherwise = char '|'
\begin{code}
pprUsage :: ImportVersion Name -> SDoc
pprUsage (m, has_orphans, is_boot, whats_imported)
- = hsep [ptext SLIT("import"), pprModuleName m,
+ = hsep [ptext SLIT("import"), ppr (moduleName m),
pp_orphan, pp_boot,
pp_versions whats_imported
] <> semi
Just v -> int v
-- Print fixities relevant to the decl
- ppr_fixes d = vcat (map ppr_fix (fixities d))
- fixities d = [ ppr fix <+> ppr n <> semi
+ ppr_fixes d = vcat (map ppr_fix d)
+ ppr_fix d = [ ppr fix <+> ppr n <> semi
| n <- tyClDeclNames d,
[Just fix] <- lookupNameEnv fixity_map n
]