diff options
Diffstat (limited to 'compiler/iface/BinIface.hs')
-rw-r--r-- | compiler/iface/BinIface.hs | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/compiler/iface/BinIface.hs b/compiler/iface/BinIface.hs index 8226b426c3..8a110b4b33 100644 --- a/compiler/iface/BinIface.hs +++ b/compiler/iface/BinIface.hs @@ -1049,7 +1049,7 @@ instance Binary LeftOrRight where _ -> return CRight } instance Binary IfaceCoCon where - put_ bh (IfaceCoAx n) = do { putByte bh 0; put_ bh n } + put_ bh (IfaceCoAx n ind) = do { putByte bh 0; put_ bh n; put_ bh ind } put_ bh IfaceReflCo = putByte bh 1 put_ bh IfaceUnsafeCo = putByte bh 2 put_ bh IfaceSymCo = putByte bh 3 @@ -1061,7 +1061,7 @@ instance Binary IfaceCoCon where get bh = do h <- getByte bh case h of - 0 -> do { n <- get bh; return (IfaceCoAx n) } + 0 -> do { n <- get bh; ind <- get bh; return (IfaceCoAx n ind) } 1 -> return IfaceReflCo 2 -> return IfaceUnsafeCo 3 -> return IfaceSymCo @@ -1356,12 +1356,11 @@ instance Binary IfaceDecl where put_ bh a6 put_ bh a7 - put_ bh (IfaceAxiom a1 a2 a3 a4) = do + put_ bh (IfaceAxiom a1 a2 a3) = do putByte bh 5 put_ bh (occNameFS a1) put_ bh a2 put_ bh a3 - put_ bh a4 get bh = do h <- getByte bh @@ -1401,9 +1400,19 @@ instance Binary IfaceDecl where _ -> do a1 <- get bh a2 <- get bh a3 <- get bh - a4 <- get bh occ <- return $! mkOccNameFS tcName a1 - return (IfaceAxiom occ a2 a3 a4) + return (IfaceAxiom occ a2 a3) + +instance Binary IfaceAxBranch where + put_ bh (IfaceAxBranch a1 a2 a3) = do + put_ bh a1 + put_ bh a2 + put_ bh a3 + get bh = do + a1 <- get bh + a2 <- get bh + a3 <- get bh + return (IfaceAxBranch a1 a2 a3) instance Binary ty => Binary (SynTyConRhs ty) where put_ bh (SynFamilyTyCon a b) = putByte bh 0 >> put_ bh a >> put_ bh b @@ -1433,17 +1442,19 @@ instance Binary IfaceClsInst where return (IfaceClsInst cls tys dfun flag orph) instance Binary IfaceFamInst where - put_ bh (IfaceFamInst fam tys name orph) = do + put_ bh (IfaceFamInst fam group tys name orph) = do put_ bh fam + put_ bh group put_ bh tys put_ bh name put_ bh orph get bh = do fam <- get bh + group <- get bh tys <- get bh name <- get bh orph <- get bh - return (IfaceFamInst fam tys name orph) + return (IfaceFamInst fam group tys name orph) instance Binary OverlapFlag where put_ bh (NoOverlap b) = putByte bh 0 >> put_ bh b |