Fix 'Typeable' deriving on GHC 7.6.
authorAntoine Latter <aslatter@gmail.com>
Mon, 16 Nov 2015 03:42:43 +0000 (21:42 -0600)
committerAntoine Latter <aslatter@gmail.com>
Mon, 16 Nov 2015 04:46:18 +0000 (22:46 -0600)
Text/Parsec/Expr.hs
Text/Parsec/Perm.hs
Text/Parsec/Prim.hs
Text/Parsec/Token.hs
Text/ParserCombinators/Parsec/Expr.hs

index bb1fb36..a260895 100644 (file)
@@ -42,7 +42,9 @@ data Assoc                = AssocNone
 data Operator s u m a   = Infix (ParsecT s u m (a -> a -> a)) Assoc
                         | Prefix (ParsecT s u m (a -> a))
                         | Postfix (ParsecT s u m (a -> a))
+#if MIN_VERSION_base(4,7,0)
     deriving ( Typeable )
+#endif
 
 -- | An @OperatorTable s u m a@ is a list of @Operator s u m a@
 -- lists. The list is ordered in descending
index 4dedaf8..7fac8a1 100644 (file)
@@ -18,7 +18,7 @@
 -- 
 -----------------------------------------------------------------------------
 
-{-# LANGUAGE ExistentialQuantification #-}
+{-# LANGUAGE ExistentialQuantification, StandaloneDeriving #-}
 
 module Text.Parsec.Perm
     ( PermParser
@@ -33,6 +33,10 @@ import Text.Parsec
 
 import Control.Monad.Identity
 import Data.Typeable ( Typeable )
+#if !(MIN_VERSION_base(4,7,0))
+-- For GHC 7.6
+import Data.Typeable ( Typeable3 )
+#endif
 
 infixl 1 <||>, <|?>
 infixl 2 <$$>, <$?>
@@ -120,12 +124,20 @@ type PermParser tok st a = StreamPermParser String st a
 -- using 'permute'.
 
 data StreamPermParser s st a = Perm (Maybe a) [StreamBranch s st a]
+#if MIN_VERSION_base(4,7,0)
     deriving ( Typeable )
+#else
+deriving instance Typeable3 StreamPermParser
+#endif
 
 -- type Branch st a = StreamBranch String st a
 
 data StreamBranch s st a = forall b. Branch (StreamPermParser s st (b -> a)) (Parsec s st b)
+#if MIN_VERSION_base(4,7,0)
     deriving ( Typeable )
+#else
+deriving instance Typeable3 StreamBranch
+#endif
 
 -- | The parser @permute perm@ parses a permutation of parser described
 -- by @perm@. For example, suppose we want to parse a permutation of:
index 513d6d4..af93563 100644 (file)
@@ -13,7 +13,7 @@
 -----------------------------------------------------------------------------   
 
 {-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies, FlexibleContexts,
-             UndecidableInstances #-}
+             UndecidableInstances, StandaloneDeriving #-}
 {-# OPTIONS_HADDOCK not-home #-}
 
 module Text.Parsec.Prim
@@ -125,7 +125,11 @@ newtype ParsecT s u m a
               -> (ParseError -> m b)                   -- empty err
               -> m b
              }
+#if MIN_VERSION_base(4,7,0)
      deriving ( Typeable )
+     -- GHC 7.6 doesn't like deriving instances of Typeabl1 for types with
+     -- non-* type-arguments.
+#endif
 
 -- | Low-level unpacking of the ParsecT type. To run your parser, please look to
 -- runPT, runP, runParserT, runParser and other such functions.
index ab1bd03..79c998c 100644 (file)
@@ -99,7 +99,9 @@ data GenLanguageDef s u m
     caseSensitive  :: Bool
 
     }
+#if MIN_VERSION_base(4,7,0)
     deriving ( Typeable )
+#endif
 
 -----------------------------------------------------------
 -- A first class module: TokenParser
@@ -307,7 +309,9 @@ data GenTokenParser s u m
 
         commaSep1        :: forall a . ParsecT s u m a -> ParsecT s u m [a]
     }
+#if MIN_VERSION_base(4,7,0)
     deriving ( Typeable )
+#endif
 
 -----------------------------------------------------------
 -- Given a LanguageDef, create a token parser.
index cb4c0f5..2b77ae2 100644 (file)
@@ -29,7 +29,6 @@ import Control.Monad.Identity
 data Operator tok st a   = Infix  (GenParser tok st (a -> a -> a)) Assoc
                          | Prefix (GenParser tok st (a -> a))
                          | Postfix (GenParser tok st (a -> a))
-    deriving ( Typeable )
 
 type OperatorTable tok st a = [[Operator tok st a]]