X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=sidebyside;f=compiler%2Fiface%2FMkIface.lhs;h=7901f7c5142325b9ca5a7e702e050e305394d46e;hb=e8a591c1a3dbdeccec2dd2aacccd7435004b0d51;hp=fa91a0ac190d37c4c13416e00753600cfce1417c;hpb=7121d8296720cf1a79259350f361f5771210b23d;p=ghc-hetmet.git diff --git a/compiler/iface/MkIface.lhs b/compiler/iface/MkIface.lhs index fa91a0a..7901f7c 100644 --- a/compiler/iface/MkIface.lhs +++ b/compiler/iface/MkIface.lhs @@ -185,7 +185,8 @@ import IdInfo ( IdInfo, CafInfo(..), WorkerInfo(..), import NewDemand ( isTopSig ) import CoreSyn import Class ( classExtraBigSig, classTyCon ) -import TyCon ( TyCon, AlgTyConRhs(..), isRecursiveTyCon, isForeignTyCon, +import TyCon ( TyCon, AlgTyConRhs(..), SynTyConRhs(..), + isRecursiveTyCon, isForeignTyCon, isSynTyCon, isAlgTyCon, isPrimTyCon, isFunTyCon, isTupleTyCon, tupleTyConBoxity, tyConStupidTheta, tyConHasGenerics, synTyConRhs, isGadtSyntaxTyCon, @@ -1018,9 +1019,10 @@ tyThingToIfaceDecl ext (AClass clas) tyThingToIfaceDecl ext (ATyCon tycon) | isSynTyCon tycon - = IfaceSyn { ifName = getOccName tycon, - ifTyVars = toIfaceTvBndrs tyvars, - ifSynRhs = toIfaceType ext syn_ty } + = IfaceSyn { ifName = getOccName tycon, + ifTyVars = toIfaceTvBndrs tyvars, + ifOpenSyn = syn_isOpen, + ifSynRhs = toIfaceType ext syn_tyki } | isAlgTyCon tycon = IfaceData { ifName = getOccName tycon, @@ -1048,10 +1050,16 @@ tyThingToIfaceDecl ext (ATyCon tycon) | otherwise = pprPanic "toIfaceDecl" (ppr tycon) where tyvars = tyConTyVars tycon - syn_ty = synTyConRhs tycon - - ifaceConDecls (NewTyCon { data_con = con }) = IfNewTyCon (ifaceConDecl con) - ifaceConDecls (DataTyCon { data_cons = cons }) = IfDataTyCon (map ifaceConDecl cons) + (syn_isOpen, syn_tyki) = case synTyConRhs tycon of + OpenSynTyCon ki -> (True , ki) + SynonymTyCon ty -> (False, ty) + + ifaceConDecls (NewTyCon { data_con = con }) = + IfNewTyCon (ifaceConDecl con) + ifaceConDecls (DataTyCon { data_cons = cons }) = + IfDataTyCon (map ifaceConDecl cons) + ifaceConDecls OpenDataTyCon = IfOpenDataTyCon + ifaceConDecls OpenNewTyCon = IfOpenNewTyCon ifaceConDecls AbstractTyCon = IfAbstractTyCon -- The last case happens when a TyCon has been trimmed during tidying -- Furthermore, tyThingToIfaceDecl is also used