X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fiface%2FMkIface.lhs;h=22fd3097d9544290ceb3ba8c84dac02faba3b09d;hb=922de8ca1aa3f2a1796e8cfa9bf8e52d7b959d9b;hp=e3193bd39b8f852025eaefb786945084a9c58c6f;hpb=e5f78a4a5309b598d5195aa49a0bf7a206942cea;p=ghc-hetmet.git diff --git a/compiler/iface/MkIface.lhs b/compiler/iface/MkIface.lhs index e3193bd..22fd309 100644 --- a/compiler/iface/MkIface.lhs +++ b/compiler/iface/MkIface.lhs @@ -195,6 +195,8 @@ import TcRnMonad import HscTypes import DynFlags +import VarEnv +import Var import Name import NameEnv import NameSet @@ -337,7 +339,19 @@ mkIface hsc_env maybe_old_iface deliberatelyOmitted x = panic ("Deliberately omitted: " ++ x) ifFamInstTcName = ifaceTyConName . ifFamInstTyCon - flattenVectInfo (VectInfo ccVar) = IfaceVectInfo (nameSetToList ccVar) + flattenVectInfo (VectInfo { vectInfoCCVar = ccVar + , vectInfoCCTyCon = ccTyCon + }) = + IfaceVectInfo { + ifaceVectInfoCCVar = [ Var.varName v + | (v, _) <- varEnvElts ccVar], + ifaceVectInfoCCTyCon = [ tyConName t + | (t, t_CC) <- nameEnvElts ccTyCon + , t /= t_CC], + ifaceVectInfoCCTyConReuse = [ tyConName t + | (t, t_CC) <- nameEnvElts ccTyCon + , t == t_CC] + } ----------------------------- writeIfaceFile :: DynFlags -> ModLocation -> ModIface -> IO () @@ -1067,10 +1081,12 @@ tyThingToIfaceDecl (AClass clas) tyThingToIfaceDecl (ATyCon tycon) | isSynTyCon tycon - = IfaceSyn { ifName = getOccName tycon, - ifTyVars = toIfaceTvBndrs tyvars, + = IfaceSyn { ifName = getOccName tycon, + ifTyVars = toIfaceTvBndrs tyvars, ifOpenSyn = syn_isOpen, - ifSynRhs = toIfaceType syn_tyki } + ifSynRhs = toIfaceType syn_tyki, + ifFamInst = famInstToIface (tyConFamInst_maybe tycon) + } | isAlgTyCon tycon = IfaceData { ifName = getOccName tycon, @@ -1097,8 +1113,7 @@ tyThingToIfaceDecl (ATyCon tycon) IfNewTyCon (ifaceConDecl con) ifaceConDecls (DataTyCon { data_cons = cons }) = IfDataTyCon (map ifaceConDecl cons) - ifaceConDecls OpenTyCon { otIsNewtype = False } = IfOpenDataTyCon - ifaceConDecls OpenTyCon { otIsNewtype = True } = IfOpenNewTyCon + ifaceConDecls OpenTyCon {} = IfOpenDataTyCon ifaceConDecls AbstractTyCon = IfAbstractTyCon -- The last case happens when a TyCon has been trimmed during tidying -- Furthermore, tyThingToIfaceDecl is also used