@@ -1,4 +1,4 @@
1−{-# LANGUAGE PatternGuards, Rank2Types, ScopedTypeVariables #-}
1+{-# LANGUAGE PatternGuards, Rank2Types, ScopedTypeVariables, CPP #-}
22
33-- |
44-- Module: Data.Aeson.Generic
@@ -339,21 +339,33 @@ modError func err = error $ "Data.Aeson.Generic." ++ func ++ ": " ++ err
339339-- Type extension for binary type constructors.
340340
341341-- | Flexible type extension
342+#if MIN_VERSION_base(4,7,0)
343+ext2' :: (Data a, Typeable t)
344+#else
342345ext2' :: (Data a, Typeable2 t)
346+#endif
343347 => c a
344348 -> (forall d1 d2. (Data d1, Data d2) => c (t d1 d2))
345349 -> c a
346350ext2' def ext = maybe def id (dataCast2 ext)
347351
348352-- | Type extension of queries for type constructors
353+#if MIN_VERSION_base(4,7,0)
354+ext2Q' :: (Data d, Typeable t)
355+#else
349356ext2Q' :: (Data d, Typeable2 t)
357+#endif
350358 => (d -> q)
351359 -> (forall d1 d2. (Data d1, Data d2) => t d1 d2 -> q)
352360 -> d -> q
353361ext2Q' def ext = unQ ((Q def) `ext2'` (Q ext))
354362
355363-- | Type extension of readers for type constructors
364+#if MIN_VERSION_base(4,7,0)
365+ext2R' :: (Monad m, Data d, Typeable t)
366+#else
356367ext2R' :: (Monad m, Data d, Typeable2 t)
368+#endif
357369 => m d
358370 -> (forall d1 d2. (Data d1, Data d2) => m (t d1 d2))
359371 -> m d