1- {-# LANGUAGE BangPatterns, CPP, MagicHash #-}
2- {-# LANGUAGE ScopedTypeVariables #-}
1+ {-# LANGUAGE CPP #-}
2+ {-# LANGUAGE BangPatterns #-}
3+ {-# LANGUAGE DeriveLift #-}
4+ {-# LANGUAGE LambdaCase #-}
5+ {-# LANGUAGE MagicHash #-}
36{-# LANGUAGE PatternGuards #-}
47{-# LANGUAGE RoleAnnotations #-}
8+ {-# LANGUAGE ScopedTypeVariables #-}
9+ {-# LANGUAGE StandaloneDeriving #-}
10+ {-# LANGUAGE TemplateHaskellQuotes #-}
511{-# LANGUAGE TypeFamilies #-}
612{-# LANGUAGE UnboxedTuples #-}
7- {-# LANGUAGE LambdaCase #-}
813#if __GLASGOW_HASKELL__ >= 802
914{-# LANGUAGE TypeInType #-}
1015{-# LANGUAGE UnboxedSums #-}
@@ -179,6 +184,7 @@ import GHC.Exts (TYPE, Int (..), Int#)
179184import Data.Functor.Identity (Identity (.. ))
180185import Control.Applicative (Const (.. ))
181186import Data.Coerce (coerce )
187+ import qualified Language.Haskell.TH.Syntax as TH
182188
183189-- | A set of values. A set cannot contain duplicate values.
184190------------------------------------------------------------------------
@@ -193,6 +199,14 @@ data Leaf k v = L !k v
193199instance (NFData k , NFData v ) => NFData (Leaf k v ) where
194200 rnf (L k v) = rnf k `seq` rnf v
195201
202+ -- | @since 0.2.17.0
203+ instance (TH. Lift k , TH. Lift v ) => TH. Lift (Leaf k v ) where
204+ #if MIN_VERSION_template_haskell(2,16,0)
205+ liftTyped (L k v) = [|| L k $! v || ]
206+ #else
207+ lift (L k v) = [| L k $! v | ]
208+ #endif
209+
196210#if MIN_VERSION_deepseq(1,4,3)
197211-- | @since 0.2.14.0
198212instance NFData k => NF. NFData1 (Leaf k ) where
@@ -217,6 +231,9 @@ data HashMap k v
217231
218232type role HashMap nominal representational
219233
234+ -- | @since 0.2.17.0
235+ deriving instance (TH. Lift k , TH. Lift v ) => TH. Lift (HashMap k v )
236+
220237instance (NFData k , NFData v ) => NFData (HashMap k v ) where
221238 rnf Empty = ()
222239 rnf (BitmapIndexed _ ary) = rnf ary
0 commit comments