Hello community,

here is the log from the commit of package ghc-parsec for openSUSE:Factory 
checked in at 2016-05-17 17:15:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-parsec (Old)
 and      /work/SRC/openSUSE:Factory/.ghc-parsec.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ghc-parsec"

Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-parsec/ghc-parsec.changes    2015-05-21 
08:11:55.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-parsec.new/ghc-parsec.changes       
2016-05-17 17:15:57.000000000 +0200
@@ -1,0 +2,12 @@
+Sat May 14 20:16:02 UTC 2016 - mimi...@gmail.com
+
+- update to 3.1.11
+- remove useless _service
+* Most types now have a `Typeable` instance. Some instances are dropped from
+   older versions of GHC (sorry about that!).
+* The token-parser now rejects Unicode numeric escape sequences for characters
+    outside the Unicode range.
+* The token-parser now loses less precision when parsing literal doubles.
+* Documentation fixes and corrections.
+
+-------------------------------------------------------------------

Old:
----
  _service
  parsec-3.1.9.tar.gz

New:
----
  parsec-3.1.11.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ ghc-parsec.spec ++++++
--- /var/tmp/diff_new_pack.05tLIn/_old  2016-05-17 17:15:58.000000000 +0200
+++ /var/tmp/diff_new_pack.05tLIn/_new  2016-05-17 17:15:58.000000000 +0200
@@ -19,7 +19,7 @@
 %global pkg_name parsec
 
 Name:           ghc-parsec
-Version:        3.1.9
+Version:        3.1.11
 Release:        0
 Summary:        Monadic parser combinators
 License:        BSD-3-Clause

++++++ parsec-3.1.9.tar.gz -> parsec-3.1.11.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parsec-3.1.9/CHANGES new/parsec-3.1.11/CHANGES
--- old/parsec-3.1.9/CHANGES    2015-03-22 02:13:17.000000000 +0100
+++ new/parsec-3.1.11/CHANGES   2016-05-13 05:05:07.000000000 +0200
@@ -1,3 +1,17 @@
+3.1.11
+
+- Include `README.md` in package.
+
+3.1.10
+
+- Most types now have a `Typeable` instance. Some instances are dropped from
+  older versions of GHC (sorry about that!).
+- The token-parser now rejects Unicode numeric escape sequences for characters
+  outside the Unicode range.
+- The token-parser now loses less precision when parsing literal doubles.
+- Documentation fixes and corrections.
+- We no longer test parsec builds on GHC 7.4.
+
 3.1.9
 
 - Many and various updates to documentation and package description (inlcuding
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parsec-3.1.9/README.md new/parsec-3.1.11/README.md
--- old/parsec-3.1.9/README.md  1970-01-01 01:00:00.000000000 +0100
+++ new/parsec-3.1.11/README.md 2016-05-13 05:05:07.000000000 +0200
@@ -0,0 +1,95 @@
+Parsec [![Build 
Status](https://travis-ci.org/aslatter/parsec.svg?branch=master)](https://travis-ci.org/aslatter/parsec)
+======
+
+A monadic parser combinator library, written by Daan Leijen. Parsec is designed
+from scratch as an industrial-strength parser library. It is simple, safe, well
+documented, has extensive libraries, good error messages, and is fast.
+
+Some links:
+
+* [Parsec on Hackage](https://hackage.haskell.org/package/parsec),
+  contains the generated documentation.
+* The 2001 paper written by Daan Leijen, some what outdated
+  
([PDF](https://web.archive.org/web/20140528151730/http://legacy.cs.uu.nl/daan/download/parsec/parsec.pdf),
+  
[HTML](https://web.archive.org/web/20140528151730/http://legacy.cs.uu.nl/daan/download/parsec/parsec.html),
+  thanks to [archive.org](http://web.archive.org);
+  and 
[PDF](https://research.microsoft.com/en-us/um/people/daan/download/parsec/parsec.pdf),
+  thanks to Microsoft Research).
+* [Using Parsec](http://book.realworldhaskell.org/read/using-parsec.html),
+  chapter 16 of [Real World Haskell](http://book.realworldhaskell.org/).
+* [An introduction to the Parsec 
library](http://kunigami.wordpress.com/2014/01/21/an-introduction-to-the-parsec-library)
+  on Kunigami's blog.
+* [An introduction to parsing text in Haskell with 
Parsec](http://unbui.lt/#!/post/haskell-parsec-basics) on Wilson's blog.
+* Differences between Parsec and
+  [Attoparsec](http://hackage.haskell.org/package/attoparsec)
+  (Haskell's other prominent parser library) as explained in
+  [an answer on StackExchange](http://stackoverflow.com/a/19213247).
+* Differences between Parsec and [Happy](http://www.haskell.org/happy)
+  (Haskell's parser generator) as explained in two
+  answers on separate StackExchange questions
+  ([1](http://stackoverflow.com/a/7270904),
+  [2](http://stackoverflow.com/a/14775331)).
+
+By analyzing [Parsec's reverse dependencies on 
Hackage](http://packdeps.haskellers.com/reverse/parsec)
+we can find open source project that make use of Parsec.  For example
+[bibtex](http://hackage.haskell.org/package/bibtex),
+[ConfigFile](http://hackage.haskell.org/package/ConfigFile),
+[csv](http://hackage.haskell.org/package/csv) and
+[hjson](http://hackage.haskell.org/package/hjson).
+
+
+## Getting started
+
+This requires a working version of `cabal` and `ghci`, which are part of
+any modern installation of Haskell, such as
+[Haskell Platform](https://www.haskell.org/platform).
+
+First install Parsec.
+
+    cabal install parsec
+
+Below we show how a very simple parser that tests matching parentheses
+was made from GHCI (the interactive GHC environment), which we started
+with the `ghci` command).
+
+```
+Prelude> :m +Text.Parsec
+Prelude Text.Parsec> let parenSet = char '(' >> many parenSet >> char ')'
+Loading package transformers-0.3.0.0 ... linking ... done.
+Loading package array-0.5.0.0 ... linking ... done.
+Loading package deepseq-1.3.0.2 ... linking ... done.
+Loading package bytestring-0.10.4.0 ... linking ... done.
+Loading package mtl-2.1.3.1 ... linking ... done.
+Loading package text-1.1.1.3 ... linking ... done.
+Loading package parsec-3.1.5 ... linking ... done.
+Prelude Text.Parsec> let parens = (many parenSet >> eof) <|> eof
+Prelude Text.Parsec> parse parens "" "()"
+Right ()
+Prelude Text.Parsec> parse parens "" "()(())"
+Right ()
+Prelude Text.Parsec> parse parens "" "("
+Left (line 1, column 2):
+unexpected end of input
+expecting "(" or ")"
+```
+
+The `Right ()` results indicate successes: the parentheses matched.
+The `Left [...]` result indicates a parse failure, and is detailed
+with an error message.
+
+For a more thorough introduction to Parsec we recommend the links at
+the top of this README file.
+
+
+## Contributing
+
+Issues (bugs, feature requests or otherwise feedback) may be reported in
+[the Github issue tracker for this 
project](https://github.com/aslatter/parsec/issues).
+
+Pull-requests are also welcome.
+
+
+## License
+
+See the [LICENSE](https://github.com/aslatter/parsec/blob/master/LICENSE)
+file in the repository.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parsec-3.1.9/Text/Parsec/Error.hs 
new/parsec-3.1.11/Text/Parsec/Error.hs
--- old/parsec-3.1.9/Text/Parsec/Error.hs       2015-03-22 02:13:17.000000000 
+0100
+++ new/parsec-3.1.11/Text/Parsec/Error.hs      2016-05-13 05:05:07.000000000 
+0200
@@ -23,6 +23,7 @@
     ) where
 
 import Data.List ( nub, sort )
+import Data.Typeable ( Typeable )
 
 import Text.Parsec.Pos
 
@@ -57,6 +58,7 @@
              | UnExpect    !String -- @ unexpected something
              | Expect      !String -- @ expecting something
              | Message     !String -- @ raw message
+    deriving ( Typeable )
 
 instance Enum Message where
     fromEnum (SysUnExpect _) = 0
@@ -94,6 +96,7 @@
 -- instance of the 'Show' and 'Eq' classes.
 
 data ParseError = ParseError !SourcePos [Message]
+    deriving ( Typeable )
 
 -- | Extracts the source position from the parse error
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parsec-3.1.9/Text/Parsec/Expr.hs 
new/parsec-3.1.11/Text/Parsec/Expr.hs
--- old/parsec-3.1.9/Text/Parsec/Expr.hs        2015-03-22 02:13:17.000000000 
+0100
+++ new/parsec-3.1.11/Text/Parsec/Expr.hs       2016-05-13 05:05:07.000000000 
+0200
@@ -18,6 +18,8 @@
     , buildExpressionParser
     ) where
 
+import Data.Typeable ( Typeable )
+
 import Text.Parsec.Prim
 import Text.Parsec.Combinator
 
@@ -31,6 +33,7 @@
 data Assoc                = AssocNone
                           | AssocLeft
                           | AssocRight
+   deriving ( Typeable )
 
 -- | This data type specifies operators that work on values of type @a@.
 -- An operator is either binary infix or unary prefix or postfix. A
@@ -39,6 +42,9 @@
 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
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parsec-3.1.9/Text/Parsec/Language.hs 
new/parsec-3.1.11/Text/Parsec/Language.hs
--- old/parsec-3.1.9/Text/Parsec/Language.hs    2015-03-22 02:13:17.000000000 
+0100
+++ new/parsec-3.1.11/Text/Parsec/Language.hs   2016-05-13 05:05:07.000000000 
+0200
@@ -3,14 +3,14 @@
 -- Module      :  Text.Parsec.Language
 -- Copyright   :  (c) Daan Leijen 1999-2001, (c) Paolo Martini 2007
 -- License     :  BSD-style (see the LICENSE file)
--- 
+--
 -- Maintainer  :  derek.a.elk...@gmail.com
 -- Stability   :  provisional
 -- Portability :  non-portable (uses non-portable module Text.Parsec.Token)
 --
 -- A helper module that defines some language definitions that can be used
 -- to instantiate a token parser (see "Text.Parsec.Token").
--- 
+--
 -----------------------------------------------------------------------------
 
 module Text.Parsec.Language
@@ -41,9 +41,9 @@
                 , commentLine    = "--"
                 , nestedComments = True
                 , identStart     = letter
-                , identLetter   = alphaNum <|> oneOf "_'"
-                , opStart       = opLetter haskellStyle
-                , opLetter      = oneOf ":!#$%&*+./<=>?@\\^|-~"
+                , identLetter    = alphaNum <|> oneOf "_'"
+                , opStart        = opLetter haskellStyle
+                , opLetter       = oneOf ":!#$%&*+./<=>?@\\^|-~"
                 , reservedOpNames= []
                 , reservedNames  = []
                 , caseSensitive  = True
@@ -55,23 +55,22 @@
 
 javaStyle  :: LanguageDef st
 javaStyle   = emptyDef
-               { commentStart   = "/*"
-               , commentEnd     = "*/"
-               , commentLine    = "//"
-               , nestedComments = True
-               , identStart     = letter
-               , identLetter    = alphaNum <|> oneOf "_'"
-               , reservedNames  = []
-               , reservedOpNames= []
+                { commentStart   = "/*"
+                , commentEnd     = "*/"
+                , commentLine    = "//"
+                , nestedComments = True
+                , identStart     = letter
+                , identLetter    = alphaNum <|> oneOf "_'"
+                , reservedNames  = []
+                , reservedOpNames= []
                 , caseSensitive  = False
-               }
+                }
 
 -----------------------------------------------------------
 -- minimal language definition
 --------------------------------------------------------
 
--- TODO: This seems wrong
--- < This is the most minimal token definition. It is recommended to use
+-- | This is the most minimal token definition. It is recommended to use
 -- this definition as the basis for other definitions. @emptyDef@ has
 -- no reserved names or operators, is case sensitive and doesn't accept
 -- comments, identifiers or operators.
@@ -106,12 +105,12 @@
 
 haskellDef  :: LanguageDef st
 haskellDef   = haskell98Def
-               { identLetter    = identLetter haskell98Def <|> char '#'
-               , reservedNames  = reservedNames haskell98Def ++
-                                  ["foreign","import","export","primitive"
-                                  ,"_ccall_","_casm_"
-                                  ,"forall"
-                                  ]
+                { identLetter    = identLetter haskell98Def <|> char '#'
+                , reservedNames  = reservedNames haskell98Def ++
+                                   ["foreign","import","export","primitive"
+                                   ,"_ccall_","_casm_"
+                                   ,"forall"
+                                   ]
                 }
 
 -- | The language definition for the language Haskell98.
@@ -143,8 +142,8 @@
 
 mondrianDef :: LanguageDef st
 mondrianDef = javaStyle
-               { reservedNames = [ "case", "class", "default", "extends"
-                                 , "import", "in", "let", "new", "of", 
"package"
-                                 ]
+                { reservedNames = [ "case", "class", "default", "extends"
+                                  , "import", "in", "let", "new", "of", 
"package"
+                                  ]
                 , caseSensitive  = True
-               }
+                }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parsec-3.1.9/Text/Parsec/Perm.hs 
new/parsec-3.1.11/Text/Parsec/Perm.hs
--- old/parsec-3.1.9/Text/Parsec/Perm.hs        2015-03-22 02:13:17.000000000 
+0100
+++ new/parsec-3.1.11/Text/Parsec/Perm.hs       2016-05-13 05:05:07.000000000 
+0200
@@ -18,7 +18,7 @@
 -- 
 -----------------------------------------------------------------------------
 
-{-# LANGUAGE ExistentialQuantification #-}
+{-# LANGUAGE ExistentialQuantification, StandaloneDeriving #-}
 
 module Text.Parsec.Perm
     ( PermParser
@@ -32,6 +32,11 @@
 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 <$$>, <$?>
@@ -119,10 +124,20 @@
 -- 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:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parsec-3.1.9/Text/Parsec/Pos.hs 
new/parsec-3.1.11/Text/Parsec/Pos.hs
--- old/parsec-3.1.9/Text/Parsec/Pos.hs 2015-03-22 02:13:17.000000000 +0100
+++ new/parsec-3.1.11/Text/Parsec/Pos.hs        2016-05-13 05:05:07.000000000 
+0200
@@ -22,12 +22,8 @@
     , updatePosChar, updatePosString
     ) where
 
-#ifdef BASE3
-import Data.Generics
-#else
 import Data.Data (Data)
 import Data.Typeable (Typeable)
-#endif
 
 -- < Source positions: a file name, a line and a column
 -- upper left is (1,1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parsec-3.1.9/Text/Parsec/Prim.hs 
new/parsec-3.1.11/Text/Parsec/Prim.hs
--- old/parsec-3.1.9/Text/Parsec/Prim.hs        2015-03-22 02:13:17.000000000 
+0100
+++ new/parsec-3.1.11/Text/Parsec/Prim.hs       2016-05-13 05:05:07.000000000 
+0200
@@ -13,7 +13,7 @@
 -----------------------------------------------------------------------------  
 
 
 {-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies, FlexibleContexts,
-             UndecidableInstances #-}
+             UndecidableInstances, StandaloneDeriving #-}
 {-# OPTIONS_HADDOCK not-home #-}
 
 module Text.Parsec.Prim
@@ -72,6 +72,8 @@
 import qualified Data.ByteString.Lazy.Char8 as CL
 import qualified Data.ByteString.Char8 as C
 
+import Data.Typeable ( Typeable )
+
 import qualified Data.Text as Text
 import qualified Data.Text.Lazy as TextL
 
@@ -123,6 +125,11 @@
               -> (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.
@@ -153,15 +160,18 @@
 
 data Consumed a  = Consumed a
                  | Empty !a
+    deriving ( Typeable )
 
 data Reply s u a = Ok a !(State s u) ParseError
                  | Error ParseError
+    deriving ( Typeable )
 
 data State s u = State {
       stateInput :: s,
       statePos   :: !SourcePos,
       stateUser  :: !u
     }
+    deriving ( Typeable )
 
 instance Functor Consumed where
     fmap f (Consumed x) = Consumed (f x)
@@ -740,12 +750,12 @@
 putState u = do updateParserState $ \s -> s { stateUser = u }
                 return ()
 
--- | @updateState f@ applies function @f@ to the user state. Suppose
+-- | @modifyState f@ applies function @f@ to the user state. Suppose
 -- that we want to count identifiers in a source, we could use the user
 -- state as:
 --
 -- >  expr  = do{ x <- identifier
--- >            ; updateState (+1)
+-- >            ; modifyState (+1)
 -- >            ; return (Id x)
 -- >            }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parsec-3.1.9/Text/Parsec/Text/Lazy.hs 
new/parsec-3.1.11/Text/Parsec/Text/Lazy.hs
--- old/parsec-3.1.9/Text/Parsec/Text/Lazy.hs   2015-03-22 02:13:17.000000000 
+0100
+++ new/parsec-3.1.11/Text/Parsec/Text/Lazy.hs  2016-05-13 05:05:07.000000000 
+0200
@@ -8,7 +8,7 @@
 -- Stability   :  provisional
 -- Portability :  portable
 -- 
--- Convinience definitions for working with lazy 'Text.Text'.
+-- Convenience definitions for working with lazy 'Text.Text'.
 --
 -----------------------------------------------------------------------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parsec-3.1.9/Text/Parsec/Token.hs 
new/parsec-3.1.11/Text/Parsec/Token.hs
--- old/parsec-3.1.9/Text/Parsec/Token.hs       2015-03-22 02:13:17.000000000 
+0100
+++ new/parsec-3.1.11/Text/Parsec/Token.hs      2016-05-13 05:05:07.000000000 
+0200
@@ -25,6 +25,7 @@
     ) where
 
 import Data.Char ( isAlpha, toLower, toUpper, isSpace, digitToInt )
+import Data.Typeable ( Typeable )
 import Data.List ( nub, sort )
 import Control.Monad.Identity
 import Text.Parsec.Prim
@@ -98,6 +99,9 @@
     caseSensitive  :: Bool
 
     }
+#if MIN_VERSION_base(4,7,0)
+    deriving ( Typeable )
+#endif
 
 -----------------------------------------------------------
 -- A first class module: TokenParser
@@ -305,6 +309,9 @@
 
         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.
@@ -454,7 +461,9 @@
     charNum         = do{ code <- decimal
                                   <|> do{ char 'o'; number 8 octDigit }
                                   <|> do{ char 'x'; number 16 hexDigit }
-                        ; return (toEnum (fromInteger code))
+                        ; if code > 0x10FFFF
+                          then fail "invalid escape sequence"
+                          else return (toEnum (fromInteger code))
                         }
 
     charEsc         = choice (map parseEsc escMap)
@@ -521,31 +530,31 @@
                         }
 
     fractExponent n = do{ fract <- fraction
-                        ; expo  <- option 1.0 exponent'
-                        ; return ((fromInteger n + fract)*expo)
+                        ; expo  <- option "" exponent'
+                        ; readDouble (show n ++ fract ++ expo)
                         }
                     <|>
                       do{ expo <- exponent'
-                        ; return ((fromInteger n)*expo)
+                        ; readDouble (show n ++ expo)
                         }
+                      where
+                        readDouble s =
+                          case reads s of
+                            [(x, "")] -> return x
+                            _         -> parserZero
 
     fraction        = do{ char '.'
                         ; digits <- many1 digit <?> "fraction"
-                        ; return (foldr op 0.0 digits)
+                        ; return ('.' : digits)
                         }
                       <?> "fraction"
-                    where
-                      op d f    = (f + fromIntegral (digitToInt d))/10.0
 
     exponent'       = do{ oneOf "eE"
-                        ; f <- sign
+                        ; sign' <- fmap (:[]) (oneOf "+-") <|> return ""
                         ; e <- decimal <?> "exponent"
-                        ; return (power (f e))
+                        ; return ('e' : sign' ++ show e)
                         }
                       <?> "exponent"
-                    where
-                       power e  | e < 0      = 1.0/power(-e)
-                                | otherwise  = fromInteger (10^e)
 
 
     -- integers and naturals
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parsec-3.1.9/Text/ParserCombinators/Parsec/Expr.hs 
new/parsec-3.1.11/Text/ParserCombinators/Parsec/Expr.hs
--- old/parsec-3.1.9/Text/ParserCombinators/Parsec/Expr.hs      2015-03-22 
02:13:17.000000000 +0100
+++ new/parsec-3.1.11/Text/ParserCombinators/Parsec/Expr.hs     2016-05-13 
05:05:07.000000000 +0200
@@ -23,6 +23,7 @@
 import qualified Text.Parsec.Expr as N
 import Text.ParserCombinators.Parsec(GenParser)
 
+import Data.Typeable ( Typeable )
 import Control.Monad.Identity
 
 data Operator tok st a   = Infix  (GenParser tok st (a -> a -> a)) Assoc
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parsec-3.1.9/parsec.cabal 
new/parsec-3.1.11/parsec.cabal
--- old/parsec-3.1.9/parsec.cabal       2015-03-22 02:13:17.000000000 +0100
+++ new/parsec-3.1.11/parsec.cabal      2016-05-13 05:05:07.000000000 +0200
@@ -1,5 +1,5 @@
 name:          parsec
-version:       3.1.9
+version:       3.1.11
 cabal-version: >= 1.8
 license:       BSD3
 license-file:  LICENSE
@@ -17,16 +17,13 @@
        and is fast.  It is defined as a monad transformer that can be
        stacked on arbitrary monads, and it is also parametric in the
        input stream type.
-extra-source-files: CHANGES
+extra-source-files: CHANGES, README.md
+tested-with:    GHC==7.10.*, GHC==7.8.*, GHC==7.6.*
 
 source-repository head
     type: git
     location: https://github.com/aslatter/parsec
 
-flag base4
-    Description: Use base-4.*
-    Default:    True
-
 library
     exposed-modules:
         Text.Parsec,
@@ -54,15 +51,21 @@
         Text.ParserCombinators.Parsec.Pos,
         Text.ParserCombinators.Parsec.Prim,
         Text.ParserCombinators.Parsec.Token
-    if flag(base4)
-        build-depends: base >= 4 && < 5
-    else
-        build-depends: base >= 3.0.3 && < 4
-        cpp-options: -DBASE3
 
-    build-depends: mtl, bytestring, text >= 0.2 && < 1.3
-    extensions:        ExistentialQuantification, PolymorphicComponents, 
MultiParamTypeClasses, FlexibleInstances, FlexibleContexts, DeriveDataTypeable, 
CPP
-    ghc-options:       -O2
+    build-depends:
+       base >= 4 && < 5,
+       mtl,
+       bytestring,
+       text >= 0.2 && < 1.3
+
+    extensions:
+       ExistentialQuantification,
+       PolymorphicComponents,
+       MultiParamTypeClasses,
+       FlexibleInstances,
+       FlexibleContexts,
+       DeriveDataTypeable,
+       CPP
 
 Test-Suite tests
     type:        exitcode-stdio-1.0
@@ -73,11 +76,12 @@
                  Bugs.Bug2,
                  Bugs.Bug6,
                  Bugs.Bug9,
+                 Bugs.Bug35,
                  Util
     build-depends:
        base,
        parsec,
-       HUnit == 1.2.*,
+       HUnit >= 1.2 && < 1.4,
        test-framework >= 0.6 && < 0.9,
        test-framework-hunit >= 0.2 && < 0.4
     ghc-options: -Wall
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parsec-3.1.9/test/Bugs/Bug35.hs 
new/parsec-3.1.11/test/Bugs/Bug35.hs
--- old/parsec-3.1.9/test/Bugs/Bug35.hs 1970-01-01 01:00:00.000000000 +0100
+++ new/parsec-3.1.11/test/Bugs/Bug35.hs        2016-05-13 05:05:07.000000000 
+0200
@@ -0,0 +1,40 @@
+
+module Bugs.Bug35 (main) where
+
+import Text.Parsec
+import Text.Parsec.Language
+import Text.Parsec.String
+import qualified Text.Parsec.Token as Token
+
+import Test.HUnit hiding (Test)
+import Test.Framework
+import Test.Framework.Providers.HUnit
+
+trickyFloats :: [String]
+trickyFloats =
+    [ "1.5339794352098402e-118"
+    , "2.108934760892056e-59"
+    , "2.250634744599241e-19"
+    , "5.0e-324"
+    , "5.960464477539063e-8"
+    , "0.25996181067141905"
+    , "0.3572019862807257"
+    , "0.46817723004874223"
+    , "0.9640035681058178"
+    , "4.23808622486133"
+    , "4.540362294799751"
+    , "5.212384849884261"
+    , "13.958257048123212"
+    , "32.96176575630599"
+    , "38.47735512322269"
+    ]
+
+float :: Parser Double
+float = Token.float (Token.makeTokenParser emptyDef)
+
+testBatch :: Assertion
+testBatch = mapM_ testFloat trickyFloats
+    where testFloat x = parse float "" x @?= Right (read x :: Double)
+
+main :: Test
+main = testCase "Quality of output of Text.Parsec.Token.float (#35)" testBatch
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parsec-3.1.9/test/Bugs.hs 
new/parsec-3.1.11/test/Bugs.hs
--- old/parsec-3.1.9/test/Bugs.hs       2015-03-22 02:13:17.000000000 +0100
+++ new/parsec-3.1.11/test/Bugs.hs      2016-05-13 05:05:07.000000000 +0200
@@ -8,9 +8,11 @@
 import qualified Bugs.Bug2
 import qualified Bugs.Bug6
 import qualified Bugs.Bug9
+import qualified Bugs.Bug35
 
 bugs :: [Test]
 bugs = [ Bugs.Bug2.main
        , Bugs.Bug6.main
        , Bugs.Bug9.main
+       , Bugs.Bug35.main
        ]


Reply via email to