@@ -5,6 +5,10 @@
5#if __GLASGOW_HASKELL__ >= 704
5#if __GLASGOW_HASKELL__ >= 704
6{-# LANGUAGE Unsafe #-}
6{-# LANGUAGE Unsafe #-}
8+#if __GLASGOW_HASKELL__ >=800
9+{-# LANGUAGE DeriveLift #-}
10+{-# LANGUAGE StandaloneDeriving #-}
9{-# OPTIONS_HADDOCK hide #-}
13{-# OPTIONS_HADDOCK hide #-}
@@ -79,6 +83,12 @@ import System.Random.Stateful (Uniform (..), uniformWord64)
79import System.Random (Random (..), next)
83import System.Random (Random (..), next)
86+#if __GLASGOW_HASKELL__ >=800
87+import Language.Haskell.TH.Syntax (Lift)
89+import Language.Haskell.TH (appE, varE)
90+import Language.Haskell.TH.Syntax (Lift (..), mkNameG_v, Lit (IntegerL), Exp (LitE))
83-- | Type representing <https://en.wikipedia.org/wiki/UUID Universally Unique Identifiers (UUID)> as specified in
93-- | Type representing <https://en.wikipedia.org/wiki/UUID Universally Unique Identifiers (UUID)> as specified in
84-- <http://tools.ietf.org/html/rfc4122 RFC 4122>.
94-- <http://tools.ietf.org/html/rfc4122 RFC 4122>.
@@ -619,3 +629,20 @@ unsafeShiftR = shiftR
619{-# INLINE unsafeShiftL #-}
629{-# INLINE unsafeShiftL #-}
620unsafeShiftL = shiftL
630unsafeShiftL = shiftL
633+#if __GLASGOW_HASKELL__ >=800
634+deriving instance Lift UUID
636+instance Lift UUID where
637+ lift (UUID w1 w2) = varE fromWords64Name `appE` liftW64 w1 `appE` liftW64 w2
639+ fromWords64Name = mkNameG_v currentPackageKey "Data.UUID.Types.Internal" "fromWords64"
640+ liftW64 x = return (LitE (IntegerL (fromIntegral x)))
642+currentPackageKey :: String
643+#ifdef CURRENT_PACKAGE_KEY
644+currentPackageKey = CURRENT_PACKAGE_KEY
646+currentPackageKey = "uuid-types-1.0.5"