Add appropriate Show, Eq and Generic instances
authorDavid Terei <code@davidterei.com>
Thu, 25 Dec 2014 09:35:46 +0000 (01:35 -0800)
committerDavid Terei <code@davidterei.com>
Thu, 25 Dec 2014 10:16:20 +0000 (02:16 -0800)
pretty.cabal
src/Text/PrettyPrint/HughesPJ.hs
tests/PrettyTestVersion.hs

index 47c1a8f..e97ac11 100644 (file)
@@ -32,8 +32,9 @@ Library
         Text.PrettyPrint.HughesPJ
         Text.PrettyPrint.HughesPJClass
     build-depends: base >= 3 && < 5,
-                   deepseq >= 1.1
-    extensions: CPP, BangPatterns
+                   deepseq >= 1.1,
+                   ghc-prim
+    extensions: CPP, BangPatterns, DeriveGeneric
     ghc-options: -Wall -fwarn-tabs
 
 Test-Suite test-pretty
@@ -42,12 +43,13 @@ Test-Suite test-pretty
                     src
     build-depends: base >= 3 && < 5,
                    deepseq >= 1.1,
+                   ghc-prim,
                    QuickCheck >= 2.5 && <3
     main-is: Test.hs
     other-modules:
         TestGenerators
         TestStructures
-    extensions: CPP, BangPatterns
+    extensions: CPP, BangPatterns, DeriveGeneric
     include-dirs: src/Text/PrettyPrint
 
 -- Executable Bench1
index 9ed67b2..f0efbd1 100644 (file)
@@ -2,6 +2,7 @@
 {-# LANGUAGE BangPatterns #-}
 #if __GLASGOW_HASKELL__ >= 701
 {-# LANGUAGE Safe #-}
+{-# LANGUAGE DeriveGeneric #-}
 #endif
 
 -----------------------------------------------------------------------------
@@ -81,6 +82,8 @@ import Data.Function   ( on )
 import Data.Monoid     ( Monoid(mempty, mappend) )
 import Data.String     ( IsString(fromString) )
 
+import GHC.Generics
+
 -- ---------------------------------------------------------------------------
 -- The Doc calculus
 
@@ -178,6 +181,9 @@ data Doc
   | NoDoc                                            -- The empty set of documents
   | Beside Doc Bool Doc                              -- True <=> space between
   | Above Doc Bool Doc                               -- True <=> never overlap
+#if __GLASGOW_HASKELL__ >= 701
+  deriving (Generic)
+#endif
 
 {-
 Here are the invariants:
@@ -225,6 +231,9 @@ data TextDetails = Chr  {-# UNPACK #-} !Char -- ^ A single Char fragment
                  | PStr String -- ^ Used to represent a Fast String fragment
                                --   but now deprecated and identical to the
                                --   Str constructor.
+#if __GLASGOW_HASKELL__ >= 701
+                 deriving (Show, Eq, Generic)
+#endif
 
 -- Combining @Doc@ values
 instance Monoid Doc where
@@ -833,6 +842,9 @@ data Style
           , lineLength     :: Int   -- ^ Length of line, in chars
           , ribbonsPerLine :: Float -- ^ Ratio of line length to ribbon length
           }
+#if __GLASGOW_HASKELL__ >= 701
+  deriving (Show, Eq, Generic)
+#endif
 
 -- | The default style (@mode=PageMode, lineLength=100, ribbonsPerLine=1.5@).
 style :: Style
@@ -843,6 +855,9 @@ data Mode = PageMode     -- ^ Normal
           | ZigZagMode   -- ^ With zig-zag cuts
           | LeftMode     -- ^ No indentation, infinitely long lines
           | OneLineMode  -- ^ All on one line
+#if __GLASGOW_HASKELL__ >= 701
+          deriving (Show, Eq, Generic)
+#endif
 
 -- | Render the @Doc@ to a String using the default @Style@.
 render :: Doc -> String
index 4a7cf6b..557504e 100644 (file)
@@ -1,4 +1,8 @@
 {-# LANGUAGE CPP #-}
+{-# LANGUAGE BangPatterns #-}
+#if __GLASGOW_HASKELL__ >= 701
+{-# LANGUAGE DeriveGeneric #-}
+#endif
 
 #define TESTING