Fix scoped type variables for expression type signatures
[ghc-hetmet.git] / compiler / iface / BinIface.hs
index e1a1aa1..41bcaed 100644 (file)
@@ -18,11 +18,6 @@ import InstEnv               ( OverlapFlag(..) )
 import Class           ( DefMeth(..) )
 import CostCentre
 import StaticFlags     ( opt_HiVersion, v_Build_tag )
-import Type            ( Kind,
-                          isLiftedTypeKind, isUnliftedTypeKind, isOpenTypeKind,
-                         isArgTypeKind, isUbxTupleKind, liftedTypeKind,
-                         unliftedTypeKind, openTypeKind, argTypeKind,  
-                         ubxTupleKind, mkArrowKind, splitFunTy_maybe )
 import Panic
 import Binary
 import Util
@@ -177,12 +172,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)
 
@@ -365,19 +361,9 @@ instance Binary Fixity where
          return (Fixity aa ab)
 
 instance (Binary name) => Binary (IPName name) where
-    put_ bh (Dupable aa) = do
-           putByte bh 0
-           put_ bh aa
-    put_ bh (Linear ab) = do
-           putByte bh 1
-           put_ bh ab
-    get bh = do
-           h <- getByte bh
-           case h of
-             0 -> do aa <- get bh
-                     return (Dupable aa)
-             _ -> do ab <- get bh
-                     return (Linear ab)
+    put_ bh (IPName aa) = put_ bh aa
+    get bh = do aa <- get bh
+               return (IPName aa)
 
 -------------------------------------------------------------------------
 --             Types from: Demand
@@ -976,6 +962,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