import HscTypes
import DynFlags
+import VarEnv
+import Var
import Name
import NameEnv
import NameSet
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 ()
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,
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