77{-# LANGUAGE PatternGuards #-}
88{-# LANGUAGE RoleAnnotations #-}
99{-# LANGUAGE ScopedTypeVariables #-}
10+ {-# LANGUAGE StandaloneDeriving #-}
11+ {-# LANGUAGE TemplateHaskellQuotes #-}
1012{-# LANGUAGE TypeFamilies #-}
1113{-# LANGUAGE UnboxedTuples #-}
1214#if __GLASGOW_HASKELL__ >= 802
@@ -194,11 +196,19 @@ hash :: H.Hashable a => a -> Hash
194196hash = fromIntegral . H. hash
195197
196198data Leaf k v = L ! k v
197- deriving (Eq , TH.Lift )
199+ deriving (Eq )
198200
199201instance (NFData k , NFData v ) => NFData (Leaf k v ) where
200202 rnf (L k v) = rnf k `seq` rnf v
201203
204+ -- | @since 0.2.17.0
205+ instance (TH. Lift k , TH. Lift v ) => TH. Lift (Leaf k v ) where
206+ #if MIN_VERSION_template_haskell(2,16,0)
207+ liftTyped (L k v) = [|| L k $! v || ]
208+ #else
209+ lift (L k v) = [| L k $! v | ]
210+ #endif
211+
202212#if MIN_VERSION_deepseq(1,4,3)
203213-- | @since 0.2.14.0
204214instance NFData k => NF. NFData1 (Leaf k ) where
@@ -220,10 +230,13 @@ data HashMap k v
220230 | Leaf ! Hash ! (Leaf k v )
221231 | Full ! (A. Array (HashMap k v ))
222232 | Collision ! Hash ! (A. Array (Leaf k v ))
223- deriving (Typeable , TH.Lift )
233+ deriving (Typeable )
224234
225235type role HashMap nominal representational
226236
237+ -- | @since 0.2.17.0
238+ deriving instance (TH. Lift k , TH. Lift v ) => TH. Lift (HashMap k v )
239+
227240instance (NFData k , NFData v ) => NFData (HashMap k v ) where
228241 rnf Empty = ()
229242 rnf (BitmapIndexed _ ary) = rnf ary
0 commit comments