X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Fmain%2FMkIface.lhs;h=4f24901ce4a2f19493070fd9a19bb4c6a9fa1625;hb=c4854c781cdf7046fe6ec064c805fa838e31e933;hp=91bd85621a07babba002910c7ac406b9c4920431;hpb=3d5a3720e58efcacc7bb9c746f04cb97eabf49a3;p=ghc-hetmet.git diff --git a/ghc/compiler/main/MkIface.lhs b/ghc/compiler/main/MkIface.lhs index 91bd856..4f24901 100644 --- a/ghc/compiler/main/MkIface.lhs +++ b/ghc/compiler/main/MkIface.lhs @@ -8,7 +8,7 @@ module MkIface ( mkFinalIface, pprModDetails, pprIface, pprUsage, - ifaceTyCls, + ifaceTyThing, ) where #include "HsVersions.h" @@ -118,7 +118,7 @@ mkFinalIface ghci_mode dflags location hi_file_path = ml_hi_file location new_decls = mkIfaceDecls ty_cls_dcls rule_dcls inst_dcls inst_dcls = map ifaceInstance (md_insts new_details) - ty_cls_dcls = foldNameEnv ifaceTyCls_acc [] (md_types new_details) + ty_cls_dcls = foldNameEnv ifaceTyThing_acc [] (md_types new_details) rule_dcls = map ifaceRule (md_rules new_details) orphan_mod = isOrphanModule (mi_module new_iface) new_details @@ -144,18 +144,18 @@ Implicit Ids and class tycons aren't included in interface files, so we miss them out of the accumulating parameter here. \begin{code} -ifaceTyCls_acc :: TyThing -> [RenamedTyClDecl] -> [RenamedTyClDecl] -ifaceTyCls_acc (AnId id) so_far | isImplicitId id = so_far -ifaceTyCls_acc (ATyCon id) so_far | isClassTyCon id = so_far -ifaceTyCls_acc other so_far = ifaceTyCls other : so_far +ifaceTyThing_acc :: TyThing -> [RenamedTyClDecl] -> [RenamedTyClDecl] +ifaceTyThing_acc (AnId id) so_far | isImplicitId id = so_far +ifaceTyThing_acc (ATyCon id) so_far | isClassTyCon id = so_far +ifaceTyThing_acc other so_far = ifaceTyThing other : so_far \end{code} Convert *any* TyThing into a RenamedTyClDecl. Used both for generating interface files and for the ':info' command in GHCi. \begin{code} -ifaceTyCls :: TyThing -> RenamedTyClDecl -ifaceTyCls (AClass clas) = cls_decl +ifaceTyThing :: TyThing -> RenamedTyClDecl +ifaceTyThing (AClass clas) = cls_decl where cls_decl = ClassDecl { tcdCtxt = toHsContext sc_theta, tcdName = getName clas, @@ -182,7 +182,7 @@ ifaceTyCls (AClass clas) = cls_decl GenDefMeth -> GenDefMeth DefMeth id -> DefMeth (getName id) -ifaceTyCls (ATyCon tycon) = ty_decl +ifaceTyThing (ATyCon tycon) = ty_decl where ty_decl | isSynTyCon tycon = TySynonym { tcdName = getName tycon, @@ -218,7 +218,7 @@ ifaceTyCls (ATyCon tycon) = ty_decl tcdSysNames = [], tcdLoc = noSrcLoc } - | otherwise = pprPanic "ifaceTyCls" (ppr tycon) + | otherwise = pprPanic "ifaceTyThing" (ppr tycon) tyvars = tyConTyVars tycon (_, syn_ty) = getSynTyConDefn tycon @@ -246,7 +246,7 @@ ifaceTyCls (ATyCon tycon) = ty_decl mk_field strict_mark field_label = ([getName field_label], BangType strict_mark (toHsType (fieldLabelType field_label))) -ifaceTyCls (AnId id) = iface_sig +ifaceTyThing (AnId id) = iface_sig where iface_sig = IfaceSig { tcdName = getName id, tcdType = toHsType id_type,