X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2Fiface%2FTcIface.lhs;h=cb37580590193e6e9586b508b0421a4084e24c14;hp=6c197cc0cf28e4b592ae0486e249e310161d730b;hb=a835e9faf19400aa6b7999b6f64e60cb1c7737dd;hpb=24bb49b71bce13faa263386e68d49fc0b05557b7 diff --git a/compiler/iface/TcIface.lhs b/compiler/iface/TcIface.lhs index 6c197cc..cb37580 100644 --- a/compiler/iface/TcIface.lhs +++ b/compiler/iface/TcIface.lhs @@ -35,8 +35,10 @@ import TyCon ( TyCon, tyConName, SynTyConRhs(..), import HscTypes ( ExternalPackageState(..), TyThing(..), tyThingClass, tyThingTyCon, ModIface(..), ModDetails(..), HomeModInfo(..), - emptyModDetails, lookupTypeEnv, lookupType, typeEnvIds ) + emptyModDetails, lookupTypeEnv, lookupType, + typeEnvIds, mkDetailsFamInstCache ) import InstEnv ( Instance(..), mkImportedInstance ) +import FamInstEnv ( extractFamInsts ) import CoreSyn import CoreUtils ( exprType, dataConRepFSInstPat ) import CoreUnfold @@ -223,10 +225,12 @@ typecheckIface iface ; exports <- ifaceExportNames (mi_exports iface) -- Finished - ; return (ModDetails { md_types = type_env, - md_insts = dfuns, - md_rules = rules, - md_exports = exports }) + ; return $ ModDetails { md_types = type_env + , md_insts = dfuns + , md_fam_insts = mkDetailsFamInstCache type_env + , md_rules = rules + , md_exports = exports + } } \end{code} @@ -372,7 +376,9 @@ tcIfaceDecl (IfaceData {ifName = occ_name, ; famInst <- case mb_family of Nothing -> return Nothing - Just (fam, tys) -> + Just (IfaceFamInst { ifFamInstTyCon = fam + , ifFamInstTys = tys + }) -> do { famTyCon <- tcIfaceTyCon fam ; insttys <- mapM tcIfaceType tys ; return $ Just (famTyCon, insttys)