Fix Trac #3323: naughty record selectors again
[ghc-hetmet.git] / compiler / iface / BinIface.hs
index 7a27401..60647a6 100644 (file)
@@ -578,6 +578,24 @@ instance Binary Activation where
              _ -> do ab <- get bh
                      return (ActiveAfter ab)
 
+instance Binary RuleMatchInfo where
+    put_ bh FunLike = putByte bh 0
+    put_ bh ConLike = putByte bh 1
+    get bh = do
+            h <- getByte bh
+            if h == 1 then return ConLike
+                      else return FunLike
+
+instance Binary InlinePragma where
+    put_ bh (InlinePragma activation match_info) = do
+            put_ bh activation
+            put_ bh match_info
+
+    get bh = do
+           act  <- get bh
+           info <- get bh
+           return (InlinePragma act info)
+
 instance Binary StrictnessMark where
     put_ bh MarkedStrict    = putByte bh 0
     put_ bh MarkedUnboxed   = putByte bh 1
@@ -1092,15 +1110,16 @@ instance Binary IfaceBinding where
                      return (IfaceRec ac)
 
 instance Binary IfaceIdDetails where
-    put_ bh IfVanillaId    = putByte bh 0
-    put_ bh (IfRecSelId b) = do { putByte bh 1; put_ bh b }
-    put_ bh IfDFunId       = putByte bh 2
+    put_ bh IfVanillaId      = putByte bh 0
+    put_ bh (IfRecSelId a b) = do { putByte bh 1; put_ bh a; put_ bh b }
+    put_ bh IfDFunId         = putByte bh 2
     get bh = do
            h <- getByte bh
            case h of
              0 -> return IfVanillaId
              1 -> do a <- get bh
-                     return (IfRecSelId a)
+                     b <- get bh
+                     return (IfRecSelId a b)
              _ -> return IfDFunId
 
 instance Binary IfaceIdInfo where