View patterns, record wildcards, and record puns
[ghc-hetmet.git] / compiler / iface / BinIface.hs
index 0ffd37d..4f2457c 100644 (file)
@@ -1,3 +1,10 @@
+{-# OPTIONS -w #-}
+-- The above warning supression flag is a temporary kludge.
+-- While working on this module you are encouraged to remove it and fix
+-- any warnings in the module. See
+--     http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings
+-- for details
+
 -- 
 --  (c) The University of Glasgow 2002-2006
 -- 
@@ -34,6 +41,7 @@ import Config
 import FastMutInt
 import Outputable
 
+import Data.List
 import Data.Word
 import Data.Array
 import Data.IORef
@@ -294,7 +302,8 @@ instance Binary ModIface where
                 mi_fam_insts = fam_insts,
                 mi_rules     = rules,
                 mi_rule_vers = rule_vers,
-                 mi_vect_info = vect_info }) = do
+                 mi_vect_info = vect_info,
+                mi_hpc       = hpc_info }) = do
        put_ bh mod
        put_ bh is_boot
        put_ bh mod_vers
@@ -312,6 +321,7 @@ instance Binary ModIface where
        lazyPut bh rules
        put_ bh rule_vers
         put_ bh vect_info
+       put_ bh hpc_info
 
    get bh = do
        mod_name  <- get bh
@@ -331,6 +341,7 @@ instance Binary ModIface where
        rules     <- {-# SCC "bin_rules" #-} lazyGet bh
        rule_vers <- get bh
         vect_info <- get bh
+        hpc_info  <- get bh
        return (ModIface {
                 mi_module    = mod_name,
                 mi_boot      = is_boot,
@@ -350,6 +361,7 @@ instance Binary ModIface where
                 mi_rules     = rules,
                 mi_rule_vers = rule_vers,
                  mi_vect_info = vect_info,
+                mi_hpc       = hpc_info,
                        -- And build the cached values
                 mi_dep_fn    = mkIfaceDepCache deprecs,
                 mi_fix_fn    = mkIfaceFixCache fixities,
@@ -416,7 +428,7 @@ instance Binary Usage where
                        usg_exports = exps, usg_entities = ents,
                        usg_rules = rules })
 
-instance Binary a => Binary (Deprecs a) where
+instance Binary Deprecations where
     put_ bh NoDeprecs     = putByte bh 0
     put_ bh (DeprecAll t) = do
            putByte bh 1
@@ -888,6 +900,10 @@ instance Binary IfaceExpr where
             putByte bh 11
             put_ bh ie
             put_ bh ico
+    put_ bh (IfaceTick m ix) = do
+            putByte bh 12
+            put_ bh m
+            put_ bh ix
     get bh = do
            h <- getByte bh
            case h of
@@ -927,6 +943,9 @@ instance Binary IfaceExpr where
               11 -> do ie <- get bh
                        ico <- get bh
                        return (IfaceCast ie ico)
+              12 -> do m <- get bh
+                       ix <- get bh
+                       return (IfaceTick m ix)
 
 instance Binary IfaceConAlt where
     put_ bh IfaceDefault = do
@@ -1222,10 +1241,14 @@ instance Binary IfaceRule where
            return (IfaceRule a1 a2 a3 a4 a5 a6 a7)
 
 instance Binary IfaceVectInfo where
-    put_ bh (IfaceVectInfo a1) = do
+    put_ bh (IfaceVectInfo a1 a2 a3) = do
            put_ bh a1
+           put_ bh a2
+           put_ bh a3
     get bh = do
            a1 <- get bh
-           return (IfaceVectInfo a1)
+           a2 <- get bh
+           a3 <- get bh
+           return (IfaceVectInfo a1 a2 a3)