Import/export of data constructors in family instances
[ghc-hetmet.git] / compiler / iface / BinIface.hs
index ac28ddb..89e6500 100644 (file)
@@ -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