git.iko.soy/distributed-process
on master help sign in
Serializable: Update TypeRep fingerprinting for GHC 8.2
368e681Ben Gamari
src/Control/Distributed/Process/Serializable.hs+10−3
@@ -1,6 +1,7 @@
1{-# LANGUAGE DeriveDataTypeable #-}
1{-# LANGUAGE DeriveDataTypeable #-}
2{-# LANGUAGE UndecidableInstances #-}
2{-# LANGUAGE UndecidableInstances #-}
3{-# LANGUAGE FlexibleInstances #-}
3{-# LANGUAGE FlexibleInstances #-}
4+{-# LANGUAGE ScopedTypeVariables #-}
4{-# LANGUAGE GADTs #-}
5{-# LANGUAGE GADTs #-}
5{-# LANGUAGE CPP #-}
6{-# LANGUAGE CPP #-}
6module Control.Distributed.Process.Serializable
7module Control.Distributed.Process.Serializable
@@ -17,7 +18,11 @@ module Control.Distributed.Process.Serializable
17
18
18import Data.Binary (Binary)
19import Data.Binary (Binary)
19
20
20−#if MIN_VERSION_base(4,7,0)
21+#if MIN_VERSION_base(4,10,0)
22+import Data.Typeable (Typeable)
23+import Type.Reflection (typeRep)
24+import Type.Reflection.Unsafe (TypeRep, typeRepFingerprint)
25+#elif MIN_VERSION_base(4,7,0)
21import Data.Typeable (Typeable)
26import Data.Typeable (Typeable)
22import Data.Typeable.Internal (TypeRep(TypeRep), typeOf)
27import Data.Typeable.Internal (TypeRep(TypeRep), typeOf)
23#else
28#else
@@ -70,8 +75,10 @@ sizeOfFingerprint :: Int
70sizeOfFingerprint = sizeOf (undefined :: Fingerprint)
75sizeOfFingerprint = sizeOf (undefined :: Fingerprint)
71
76
72-- | The fingerprint of the typeRep of the argument
77-- | The fingerprint of the typeRep of the argument
73−fingerprint :: Typeable a => a -> Fingerprint
78+fingerprint :: forall a. Typeable a => a -> Fingerprint
74−#if MIN_VERSION_base(4,8,0)
79+#if MIN_VERSION_base(4,10,0)
80+fingerprint _ = typeRepFingerprint (typeRep :: TypeRep a)
81+#elif MIN_VERSION_base(4,8,0)
75fingerprint a = let TypeRep fp _ _ _ = typeOf a in fp
82fingerprint a = let TypeRep fp _ _ _ = typeOf a in fp
76#else
83#else
77fingerprint a = let TypeRep fp _ _ = typeOf a in fp
84fingerprint a = let TypeRep fp _ _ = typeOf a in fp