diff options
Diffstat (limited to 'compiler/utils')
| -rw-r--r-- | compiler/utils/Bag.lhs | 1 | ||||
| -rw-r--r-- | compiler/utils/Serialized.hs | 10 | 
2 files changed, 11 insertions, 0 deletions
diff --git a/compiler/utils/Bag.lhs b/compiler/utils/Bag.lhs index a32991b97d..a83397898e 100644 --- a/compiler/utils/Bag.lhs +++ b/compiler/utils/Bag.lhs @@ -268,5 +268,6 @@ instance Data a => Data (Bag a) where    toConstr _   = abstractConstr $ "Bag("++show (typeOf (undefined::a))++")"    gunfold _ _  = error "gunfold"    dataTypeOf _ = mkNoRepType "Bag" +  dataCast1 x  = gcast1 x  \end{code} diff --git a/compiler/utils/Serialized.hs b/compiler/utils/Serialized.hs index 26cca6c386..902d2feea0 100644 --- a/compiler/utils/Serialized.hs +++ b/compiler/utils/Serialized.hs @@ -95,16 +95,26 @@ deserializeConstr bytes k = deserializeWord8 bytes $ \constr_ix bytes ->                                  x -> error $ "deserializeConstr: unrecognised serialized constructor type " ++ show x ++ " in context " ++ show bytes +#if __GLASGOW_HASKELL__ < 707  serializeFixedWidthNum :: forall a. (Num a, Integral a, Bits a) => a -> [Word8] -> [Word8]  serializeFixedWidthNum what = go (bitSize what) what +#else +serializeFixedWidthNum :: forall a. (Num a, Integral a, FiniteBits a) => a -> [Word8] -> [Word8] +serializeFixedWidthNum what = go (finiteBitSize what) what +#endif    where      go :: Int -> a -> [Word8] -> [Word8]      go size current rest        | size <= 0 = rest        | otherwise = fromIntegral (current .&. 255) : go (size - 8) (current `shiftR` 8) rest +#if __GLASGOW_HASKELL__ < 707  deserializeFixedWidthNum :: forall a b. (Num a, Integral a, Bits a) => [Word8] -> (a -> [Word8] -> b) -> b  deserializeFixedWidthNum bytes k = go (bitSize (undefined :: a)) bytes k +#else +deserializeFixedWidthNum :: forall a b. (Num a, Integral a, FiniteBits a) => [Word8] -> (a -> [Word8] -> b) -> b +deserializeFixedWidthNum bytes k = go (finiteBitSize (undefined :: a)) bytes k +#endif    where      go :: Int -> [Word8] -> (a -> [Word8] -> b) -> b      go size bytes k  | 
