X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fiface%2FBinIface.hs;h=89e6500c5a85a0b5e5d8a0906af1efeb99884b1b;hb=17434e5beb213f1e8971d1ce8ffbf40a0848bb3a;hp=ac28ddb90dec00d3157980fd72d153bc444c85a3;hpb=80c89b80c355b2aaebcd53330e6c6170c3f05aca;p=ghc-hetmet.git diff --git a/compiler/iface/BinIface.hs b/compiler/iface/BinIface.hs index ac28ddb..89e6500 100644 --- a/compiler/iface/BinIface.hs +++ b/compiler/iface/BinIface.hs @@ -177,12 +177,13 @@ instance Binary ModIface where mi_decls = decls, mi_globals = Nothing, mi_insts = insts, + mi_fam_insts = mkIfaceFamInstsCache . map snd $ decls, mi_rules = rules, mi_rule_vers = rule_vers, -- And build the cached values - mi_dep_fn = mkIfaceDepCache deprecs, - mi_fix_fn = mkIfaceFixCache fixities, - mi_ver_fn = mkIfaceVerCache decls }) + mi_dep_fn = mkIfaceDepCache deprecs, + mi_fix_fn = mkIfaceFixCache fixities, + mi_ver_fn = mkIfaceVerCache decls }) GLOBAL_VAR(v_IgnoreHiWay, False, Bool) @@ -976,6 +977,14 @@ instance Binary IfaceInst where orph <- get bh return (IfaceInst cls tys dfun flag orph) +instance Binary IfaceFamInst where + put_ bh (IfaceFamInst tycon tys) = do + put_ bh tycon + put_ bh tys + get bh = do tycon <- get bh + tys <- get bh + return (IfaceFamInst tycon tys) + instance Binary OverlapFlag where put_ bh NoOverlap = putByte bh 0 put_ bh OverlapOk = putByte bh 1 @@ -1006,7 +1015,7 @@ instance Binary IfaceConDecls where return (IfNewTyCon aa) instance Binary IfaceConDecl where - put_ bh (IfCon a1 a2 a3 a4 a5 a6 a7 a8 a9 a10) = do + put_ bh (IfCon a1 a2 a3 a4 a5 a6 a7 a8 a9) = do put_ bh a1 put_ bh a2 put_ bh a3 @@ -1016,7 +1025,6 @@ instance Binary IfaceConDecl where put_ bh a7 put_ bh a8 put_ bh a9 - put_ bh a10 get bh = do a1 <- get bh a2 <- get bh a3 <- get bh @@ -1026,8 +1034,7 @@ instance Binary IfaceConDecl where a7 <- get bh a8 <- get bh a9 <- get bh - a10 <- get bh - return (IfCon a1 a2 a3 a4 a5 a6 a7 a8 a9 a10) + return (IfCon a1 a2 a3 a4 a5 a6 a7 a8 a9) instance Binary IfaceClassOp where put_ bh (IfaceClassOp n def ty) = do