packages feed

megaparsec-tests 9.3.0 → 9.3.1

raw patch · 6 files changed

+125/−121 lines, 6 filesdep ~megaparsecPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: megaparsec

API changes (from Hackage documentation)

Files

megaparsec-tests.cabal view
@@ -1,6 +1,6 @@ cabal-version:   2.4 name:            megaparsec-tests-version:         9.3.0+version:         9.3.1 license:         BSD-2-Clause license-file:    LICENSE.md maintainer:      Mark Karpov <markkarpov92@gmail.com>@@ -31,7 +31,7 @@         hspec >=2.0 && <3.0,         hspec-expectations >=0.8 && <0.9,         hspec-megaparsec >=2.0 && <3.0,-        megaparsec ==9.3.0,+        megaparsec ==9.3.1,         mtl >=2.2.2 && <3.0,         text >=0.2 && <2.1,         transformers >=0.4 && <0.7@@ -71,7 +71,7 @@         hspec >=2.0 && <3.0,         hspec-expectations >=0.8 && <0.9,         hspec-megaparsec >=2.0 && <3.0,-        megaparsec ==9.3.0,+        megaparsec ==9.3.1,         megaparsec-tests,         mtl >=2.2.2 && <3.0,         parser-combinators >=1.0 && <2.0,
src/Test/Hspec/Megaparsec/AdHoc.hs view
@@ -121,7 +121,7 @@ -- all supported monads transformers in turn). grs ::   -- | Parser to run-  (forall m. MonadParsecDbg Void String m => m a) ->+  (forall m. (MonadParsecDbg Void String m) => m a) ->   -- | Input for the parser   String ->   -- | How to check result of parsing@@ -141,7 +141,7 @@ -- | 'grs'' to 'grs' is as 'prs'' to 'prs'. grs' ::   -- | Parser to run-  (forall m. MonadParsecDbg Void String m => m a) ->+  (forall m. (MonadParsecDbg Void String m) => m a) ->   -- | Input for the parser   String ->   -- | How to check result of parsing@@ -158,18 +158,18 @@   r (prs' (evalRWSTL p) s)   r (prs' (evalRWSTS p) s) -evalWriterTL :: Monad m => L.WriterT [Int] m a -> m a+evalWriterTL :: (Monad m) => L.WriterT [Int] m a -> m a evalWriterTL = fmap fst . L.runWriterT -evalWriterTS :: Monad m => S.WriterT [Int] m a -> m a+evalWriterTS :: (Monad m) => S.WriterT [Int] m a -> m a evalWriterTS = fmap fst . S.runWriterT -evalRWSTL :: Monad m => L.RWST () [Int] () m a -> m a+evalRWSTL :: (Monad m) => L.RWST () [Int] () m a -> m a evalRWSTL m = do   (a, _, _) <- L.runRWST m () ()   return a -evalRWSTS :: Monad m => S.RWST () [Int] () m a -> m a+evalRWSTS :: (Monad m) => S.RWST () [Int] () m a -> m a evalRWSTS m = do   (a, _, _) <- S.runRWST m () ()   return a@@ -201,11 +201,11 @@     prs_ p s `shouldParse` s'  -- | Get tab width from 'PosState'. Use with care only for testing.-getTabWidth :: MonadParsec e s m => m Pos+getTabWidth :: (MonadParsec e s m) => m Pos getTabWidth = pstateTabWidth . statePosState <$> getParserState  -- | Set tab width in 'PosState'. Use with care only for testing.-setTabWidth :: MonadParsec e s m => Pos -> m ()+setTabWidth :: (MonadParsec e s m) => Pos -> m () setTabWidth w = updateParserState $ \st ->   let pst = statePosState st    in st {statePosState = pst {pstateTabWidth = w}}@@ -277,7 +277,7 @@       <*> arbitrary       <*> arbitrary -instance Arbitrary t => Arbitrary (ErrorItem t) where+instance (Arbitrary t) => Arbitrary (ErrorItem t) where   arbitrary =     oneof       [ Tokens <$> (NE.fromList . getNonEmpty <$> arbitrary),@@ -307,7 +307,7 @@           <*> (E.fromList <$> scaleDown arbitrary)       ] -instance Arbitrary s => Arbitrary (State s e) where+instance (Arbitrary s) => Arbitrary (State s e) where   arbitrary = do     input <- scaleDown arbitrary     offset <- choose (1, 10000)@@ -324,7 +324,7 @@           stateParseErrors = []         } -instance Arbitrary s => Arbitrary (PosState s) where+instance (Arbitrary s) => Arbitrary (PosState s) where   arbitrary =     PosState       <$> arbitrary@@ -345,5 +345,5 @@ instance Arbitrary BL.ByteString where   arbitrary = BL.pack <$> arbitrary -instance Arbitrary a => Arbitrary (NonEmpty a) where+instance (Arbitrary a) => Arbitrary (NonEmpty a) where   arbitrary = NE.fromList <$> (arbitrary `suchThat` (not . null))
tests/Text/Megaparsec/DebugSpec.hs view
@@ -30,14 +30,14 @@   describe "dbg" $ do     context "when inner parser succeeds consuming input" $ do       it "has no effect on how parser works" $ do-        let p :: MonadParsecDbg Void String m => m Char+        let p :: (MonadParsecDbg Void String m) => m Char             p = dbg "char" (char 'a')             s = "ab"         shouldStderr p s "char> IN: \"ab\"\nchar> MATCH (COK): 'a'\nchar> VALUE: 'a'\n\n"         grs p s (`shouldParse` 'a')         grs' p s (`succeedsLeaving` "b")       it "its hints are preserved" $ do-        let p :: MonadParsecDbg Void String m => m String+        let p :: (MonadParsecDbg Void String m) => m String             p = dbg "many chars" (many (char 'a')) <* empty             s = "abcd"         shouldStderr p s "many chars> IN: \"abcd\"\nmany chars> MATCH (COK): 'a'\nmany chars> VALUE: \"a\"\n\n"@@ -45,7 +45,7 @@         grs' p s (`failsLeaving` "bcd")     context "when inner parser fails consuming input" $       it "has no effect on how parser works" $ do-        let p :: MonadParsecDbg Void String m => m Char+        let p :: (MonadParsecDbg Void String m) => m Char             p = dbg "chars" (char 'a' *> char 'c')             s = "abc"         shouldStderr p s "chars> IN: \"abc\"\nchars> MATCH (CERR): 'a'\nchars> ERROR:\nchars> offset=1:\nchars> unexpected 'b'\nchars> expecting 'c'\n\n"@@ -53,14 +53,14 @@         grs' p s (`failsLeaving` "bc")     context "when inner parser succeeds without consuming" $ do       it "has no effect on how parser works" $ do-        let p :: MonadParsecDbg Void String m => m Char+        let p :: (MonadParsecDbg Void String m) => m Char             p = dbg "return" (return 'a')             s = "abc"         shouldStderr p s "return> IN: \"abc\"\nreturn> MATCH (EOK): <EMPTY>\nreturn> VALUE: 'a'\n\n"         grs p s (`shouldParse` 'a')         grs' p s (`succeedsLeaving` s)       it "its hints are preserved" $ do-        let p :: MonadParsecDbg Void String m => m String+        let p :: (MonadParsecDbg Void String m) => m String             p = dbg "many chars" (many (char 'a')) <* empty             s = "bcd"         shouldStderr p s "many chars> IN: \"bcd\"\nmany chars> MATCH (EOK): <EMPTY>\nmany chars> VALUE: \"\"\n\n"@@ -68,7 +68,7 @@         grs' p s (`failsLeaving` "bcd")     context "when inner parser fails without consuming" $       it "has no effect on how parser works" $ do-        let p :: MonadParsecDbg Void String m => m ()+        let p :: (MonadParsecDbg Void String m) => m ()             p = dbg "empty" (void empty)             s = "abc"         shouldStderr p s "empty> IN: \"abc\"\nempty> MATCH (EERR): <EMPTY>\nempty> ERROR:\nempty> offset=0:\nempty> unknown parse error\n\n"
tests/Text/Megaparsec/ErrorSpec.hs view
@@ -167,9 +167,12 @@             errorBundlePretty bundle               `shouldBe` "1:10:\n  |\n1 | foo\n  | \nunexpected 'o'\nexpecting 'x'\n"     it "takes tab width into account correctly" $-      property $ \w' -> do-        let s = "\tsomething\t" :: String-            pe = err 1 (utok 's' <> etok 'x') :: PE+      property $ \w' i' -> do+        let w = unPos w'+            i = unPos i' `rem` (w * 2)+            as = replicate i 'a'+            s = "\t" ++ as ++ "\tb" :: String+            pe = err (2 + i) (utok 'b' <> etok 'x') :: PE             bundle =               ParseErrorBundle                 { bundleErrors = pe :| [],@@ -182,18 +185,19 @@                         pstateLinePrefix = ""                       }                 }-            w = unPos w'-            tabRep = replicate w ' '+            secondTabApparentWidth = w - (i `rem` w)+            errColumn = w + i + secondTabApparentWidth         errorBundlePretty bundle           `shouldBe` ( "1:"-                         ++ show (w + 1)+                         ++ show (errColumn + 1)                          ++ ":\n  |\n1 | "-                         ++ tabRep-                         ++ "something"-                         ++ tabRep+                         ++ replicate w ' '+                         ++ as+                         ++ replicate secondTabApparentWidth ' '+                         ++ "b"                          ++ "\n  | "-                         ++ tabRep-                         ++ "^\nunexpected 's'\nexpecting 'x'\n"+                         ++ replicate errColumn ' '+                         ++ "^\nunexpected 'b'\nexpecting 'x'\n"                      )     it "displays multi-error bundle correctly" $ do       let s = "something\ngood\n" :: String@@ -266,7 +270,7 @@  type PE = ParseError String Void -contains :: Foldable t => (PE -> t a) -> (a -> String) -> PE -> Property+contains :: (Foldable t) => (PE -> t a) -> (a -> String) -> PE -> Property contains g r e = property (all f (g e))   where     rendered = parseErrorPretty e
tests/Text/Megaparsec/StreamSpec.hs view
@@ -496,7 +496,7 @@                 }             (r, _) = reachOffset 2 pst             w = unPos (pstateTabWidth pst)-            r' = replicate (w * 2) ' ' ++ "a" ++ replicate w ' '+            r' = replicate (w * 2) ' ' ++ "a" ++ replicate (max 1 (w - 1)) ' '         r `shouldBe` Just r'     it "returns correct line (with line prefix)" $       property $ \pst' -> do
tests/Text/MegaparsecSpec.hs view
@@ -422,7 +422,7 @@     describe "parseError" $ do       it "immediately fails with given parse error" $         property $ \st e -> do-          let p :: MonadParsec Void String m => m ()+          let p :: (MonadParsec Void String m) => m ()               p = parseError e           runParser' p st `shouldBe` (st, Left (mkBundle st (nes e))) @@ -432,7 +432,7 @@           it "collection of hints remains empty" $             property $ \lbl a ->               not (null lbl) ==> do-                let p :: MonadParsec Void String m => m Char+                let p :: (MonadParsec Void String m) => m Char                     p = label lbl (char a) <* empty                     s = [a]                 grs p s (`shouldFailWith` err 1 mempty)@@ -441,7 +441,7 @@           it "does not alter the hints" $             property $ \lbl a ->               not (null lbl) ==> do-                let p :: MonadParsec Void String m => m String+                let p :: (MonadParsec Void String m) => m String                     p = label lbl (many (char a)) <* empty                     s = [a]                 grs p s (`shouldFailWith` err 1 (etok a))@@ -450,7 +450,7 @@         it "reports parse error without modification" $           property $ \lbl a b c ->             not (null lbl) && b /= c ==> do-              let p :: MonadParsec Void String m => m Char+              let p :: (MonadParsec Void String m) => m Char                   p = label lbl (char a *> char b)                   s = [a, c]               grs p s (`shouldFailWith` err 1 (utok c <> etok b))@@ -460,28 +460,28 @@           it "collection of hints remains empty" $             property $ \lbl a ->               not (null lbl) ==> do-                let p :: MonadParsec Void String m => m Char+                let p :: (MonadParsec Void String m) => m Char                     p = label lbl (return a) <* empty                 grs p "" (`shouldFailWith` err 0 mempty)         context "inner parser produces hints" $           it "replaces the last hint with given label" $             property $ \lbl a ->               not (null lbl) ==> do-                let p :: MonadParsec Void String m => m String+                let p :: (MonadParsec Void String m) => m String                     p = label lbl (many (char a)) <* empty                 grs p "" (`shouldFailWith` err 0 (elabel lbl))       context "when inner parser fails without consuming" $ do         it "is mentioned in parse error via its label" $           property $ \lbl ->             not (null lbl) ==> do-              let p :: MonadParsec Void String m => m ()+              let p :: (MonadParsec Void String m) => m ()                   p = label lbl empty               grs p "" (`shouldFailWith` err 0 (elabel lbl))         context "when inner parser is composite with 2-hint sources" $           it "both hint groups are replaced by the label" $             property $ \lbl a b ->               not (null lbl) && a /= b ==> do-                let p :: MonadParsec Void String m => m (Maybe Char)+                let p :: (MonadParsec Void String m) => m (Maybe Char)                     p = label lbl (optional (char a) *> optional (char b)) <* empty                 grs p "" (`shouldFailWith` err 0 (elabel lbl))     describe "hidden" $ do@@ -489,7 +489,7 @@         context "inner parser does not produce any hints" $           it "collection of hints remains empty" $             property $ \a -> do-              let p :: MonadParsec Void String m => m Char+              let p :: (MonadParsec Void String m) => m Char                   p = hidden (char a) <* empty                   s = [a]               grs p s (`shouldFailWith` err 1 mempty)@@ -497,7 +497,7 @@         context "inner parser produces hints" $           it "hides the parser in the error message" $             property $ \a -> do-              let p :: MonadParsec Void String m => m String+              let p :: (MonadParsec Void String m) => m String                   p = hidden (many (char a)) <* empty                   s = [a]               grs p s (`shouldFailWith` err 1 mempty)@@ -506,7 +506,7 @@         it "reports parse error without modification" $           property $ \a b c ->             b /= c ==> do-              let p :: MonadParsec Void String m => m Char+              let p :: (MonadParsec Void String m) => m Char                   p = hidden (char a *> char b)                   s = [a, c]               grs p s (`shouldFailWith` err 1 (utok c <> etok b))@@ -515,19 +515,19 @@         context "inner parser does not produce any hints" $           it "collection of hints remains empty" $             property $ \a -> do-              let p :: MonadParsec Void String m => m Char+              let p :: (MonadParsec Void String m) => m Char                   p = hidden (return a) <* empty               grs p "" (`shouldFailWith` err 0 mempty)         context "inner parser produces hints" $           it "hides the parser in the error message" $             property $ \a -> do-              let p :: MonadParsec Void String m => m String+              let p :: (MonadParsec Void String m) => m String                   p = hidden (many (char a)) <* empty               grs p "" (`shouldFailWith` err 0 mempty)       context "when inner parser fails without consuming" $         it "hides the parser in the error message" $           do-            let p :: MonadParsec Void String m => m ()+            let p :: (MonadParsec Void String m) => m ()                 p = hidden empty             grs p "" (`shouldFailWith` err 0 mempty) @@ -535,7 +535,7 @@       context "when inner parser succeeds consuming" $         it "try has no effect" $           property $ \a -> do-            let p :: MonadParsec Void String m => m Char+            let p :: (MonadParsec Void String m) => m Char                 p = try (char a)                 s = [a]             grs p s (`shouldParse` a)@@ -544,7 +544,7 @@         it "backtracks, it appears as if the parser has not consumed anything" $           property $ \a b c ->             b /= c ==> do-              let p :: MonadParsec Void String m => m Char+              let p :: (MonadParsec Void String m) => m Char                   p = try (char a *> char b)                   s = [a, c]               grs p s (`shouldFailWith` err 1 (utok c <> etok b))@@ -552,7 +552,7 @@         it "hints from the inner parse error do not leak" $           property $ \a b c ->             b /= c ==> do-              let p :: MonadParsec Void String m => m (Maybe Char)+              let p :: (MonadParsec Void String m) => m (Maybe Char)                   p = (optional . try) (char a *> char b) <* empty                   s = [a, c]               grs p s (`shouldFailWith` err 0 mempty)@@ -560,13 +560,13 @@       context "when inner parser succeeds without consuming" $         it "try has no effect" $           property $ \a -> do-            let p :: MonadParsec Void String m => m Char+            let p :: (MonadParsec Void String m) => m Char                 p = try (return a)             grs p "" (`shouldParse` a)       context "when inner parser fails without consuming" $         it "try backtracks parser state anyway" $           property $ \w -> do-            let p :: MonadParsec Void String m => m Char+            let p :: (MonadParsec Void String m) => m Char                 p = try (setTabWidth w *> empty)             grs p "" (`shouldFailWith` err 0 mempty)             grs' p "" ((`shouldBe` defaultTabWidth) . grabTabWidth)@@ -575,14 +575,14 @@       context "when inner parser succeeds consuming" $ do         it "result is returned but parser state is not changed" $           property $ \a w -> do-            let p :: MonadParsec Void String m => m Pos+            let p :: (MonadParsec Void String m) => m Pos                 p = lookAhead (setTabWidth w *> char a) *> getTabWidth                 s = [a]             grs p s (`shouldParse` defaultTabWidth)             grs' p s (`succeedsLeaving` s)         it "hints are not preserved" $           property $ \a -> do-            let p :: MonadParsec Void String m => m String+            let p :: (MonadParsec Void String m) => m String                 p = lookAhead (many (char a)) <* empty                 s = [a]             grs p s (`shouldFailWith` err 0 mempty)@@ -591,7 +591,7 @@         it "error message is reported as usual" $           property $ \a b c ->             b /= c ==> do-              let p :: MonadParsec Void String m => m Char+              let p :: (MonadParsec Void String m) => m Char                   p = lookAhead (char a *> char b)                   s = [a, c]               grs p s (`shouldFailWith` err 1 (utok c <> etok b))@@ -599,7 +599,7 @@       context "when inner parser succeeds without consuming" $ do         it "result is returned but parser state in not changed" $           property $ \a w -> do-            let p :: MonadParsec Void String m => m Pos+            let p :: (MonadParsec Void String m) => m Pos                 p = lookAhead (setTabWidth w *> char a) *> getTabWidth                 s = [a]             grs p s (`shouldParse` defaultTabWidth)@@ -607,7 +607,7 @@         it "hints are not preserved" $           property $ \a b ->             a /= b ==> do-              let p :: MonadParsec Void String m => m String+              let p :: (MonadParsec Void String m) => m String                   p = lookAhead (many (char a)) <* empty                   s = [b]               grs p s (`shouldFailWith` err 0 mempty)@@ -615,7 +615,7 @@       context "when inner parser fails without consuming" $         it "error message is reported as usual" $           do-            let p :: MonadParsec Void String m => m Char+            let p :: (MonadParsec Void String m) => m Char                 p = lookAhead empty             grs p "" (`shouldFailWith` err 0 mempty) @@ -623,7 +623,7 @@       context "when inner parser succeeds consuming" $         it "signals correct parse error" $           property $ \a w -> do-            let p :: MonadParsec Void String m => m ()+            let p :: (MonadParsec Void String m) => m ()                 p = notFollowedBy (setTabWidth w <* char a)                 s = [a]             grs p s (`shouldFailWith` err 0 (utok a))@@ -633,7 +633,7 @@         it "succeeds without consuming" $           property $ \a b c w ->             b /= c ==> do-              let p :: MonadParsec Void String m => m ()+              let p :: (MonadParsec Void String m) => m ()                   p = notFollowedBy (setTabWidth w *> char a *> char b)                   s = [a, c]               grs' p s (`succeedsLeaving` s)@@ -641,7 +641,7 @@         it "hints are not preserved" $           property $ \a b ->             a /= b ==> do-              let p :: MonadParsec Void String m => m ()+              let p :: (MonadParsec Void String m) => m ()                   p = notFollowedBy (char b *> many (char a) <* char a) <* empty                   s = [b, b]               grs p s (`shouldFailWith` err 0 mempty)@@ -649,7 +649,7 @@       context "when inner parser succeeds without consuming" $         it "signals correct parse error" $           property $ \a w -> do-            let p :: MonadParsec Void String m => m ()+            let p :: (MonadParsec Void String m) => m ()                 p = notFollowedBy (setTabWidth w *> return a)                 s = [a]             grs p s (`shouldFailWith` err 0 (utok a))@@ -658,13 +658,13 @@       context "when inner parser fails without consuming" $ do         it "succeeds without consuming" $           property $ \w -> do-            let p :: MonadParsec Void String m => m ()+            let p :: (MonadParsec Void String m) => m ()                 p = notFollowedBy (setTabWidth w *> empty)             grs p "" (`shouldParse` ())             grs' p "" ((`shouldBe` defaultTabWidth) . grabTabWidth)         it "hints are not preserved" $           property $ \a -> do-            let p :: MonadParsec Void String m => m ()+            let p :: (MonadParsec Void String m) => m ()                 p = notFollowedBy (many (char a) <* char a) <* empty                 s = ""             grs p s (`shouldFailWith` err 0 mempty)@@ -674,7 +674,7 @@       context "when inner parser succeeds consuming" $         it "the result is returned as usual" $           property $ \a as -> do-            let p :: MonadParsec Void String m => m (Maybe Char)+            let p :: (MonadParsec Void String m) => m (Maybe Char)                 p = withRecovery (const $ return Nothing) (pure <$> char a)                 s = a : as             grs p s (`shouldParse` Just a)@@ -684,7 +684,7 @@           it "its result is returned and position is advanced" $             property $ \a b c as ->               b /= c ==> do-                let p :: MonadParsec Void String m => m (Either (ParseError String Void) Char)+                let p :: (MonadParsec Void String m) => m (Either (ParseError String Void) Char)                     p =                       withRecovery                         (\e -> Left e <$ string (c : as))@@ -695,7 +695,7 @@           it "hints are not preserved" $             property $ \a b c as ->               b /= c ==> do-                let p :: MonadParsec Void String m => m (Either (ParseError String Void) Char)+                let p :: (MonadParsec Void String m) => m (Either (ParseError String Void) Char)                     p =                       withRecovery                         (\e -> Left e <$ string (c : as))@@ -708,7 +708,7 @@           it "the original parse error (and state) is reported" $             property $ \a b c as ->               b /= c ==> do-                let p :: MonadParsec Void String m => m (Either (ParseError String Void) Char)+                let p :: (MonadParsec Void String m) => m (Either (ParseError String Void) Char)                     p =                       withRecovery                         (\e -> Left e <$ char c <* empty)@@ -720,7 +720,7 @@           it "its result is returned (and state)" $             property $ \a b c as ->               b /= c ==> do-                let p :: MonadParsec Void String m => m (Either (ParseError String Void) Char)+                let p :: (MonadParsec Void String m) => m (Either (ParseError String Void) Char)                     p = withRecovery (return . Left) (Right <$> char a <* char b)                     s = a : c : as                 grs p s (`shouldParse` Left (err 1 (utok c <> etok b)))@@ -728,7 +728,7 @@           it "original hints are preserved" $             property $ \a b c as ->               b /= c ==> do-                let p :: MonadParsec Void String m => m (Either (ParseError String Void) Char)+                let p :: (MonadParsec Void String m) => m (Either (ParseError String Void) Char)                     p =                       withRecovery                         (return . Left)@@ -741,7 +741,7 @@           it "the original parse error (and state) is reported" $             property $ \a b c as ->               b /= c ==> do-                let p :: MonadParsec Void String m => m (Either (ParseError String Void) Char)+                let p :: (MonadParsec Void String m) => m (Either (ParseError String Void) Char)                     p =                       withRecovery                         (\e -> Left e <$ empty)@@ -752,7 +752,7 @@       context "when inner parser succeeds without consuming" $         it "the result is returned as usual" $           property $ \a s -> do-            let p :: MonadParsec Void String m => m (Maybe Char)+            let p :: (MonadParsec Void String m) => m (Maybe Char)                 p = withRecovery (const $ return Nothing) (return a)             grs p s (`shouldParse` a)             grs' p s (`succeedsLeaving` s)@@ -760,7 +760,7 @@         context "when recovering parser succeeds consuming input" $           it "its result is returned and position is advanced" $             property $ \a as -> do-              let p :: MonadParsec Void String m => m (Either (ParseError String Void) Char)+              let p :: (MonadParsec Void String m) => m (Either (ParseError String Void) Char)                   p = withRecovery (\e -> Left e <$ string s) empty                   s = a : as               grs p s (`shouldParse` Left (err 0 mempty))@@ -769,7 +769,7 @@           it "the original parse error (and state) is reported" $             property $ \a b as ->               a /= b ==> do-                let p :: MonadParsec Void String m => m (Either (ParseError String Void) Char)+                let p :: (MonadParsec Void String m) => m (Either (ParseError String Void) Char)                     p =                       withRecovery                         (\e -> Left e <$ char a <* char b <* empty)@@ -780,14 +780,14 @@         context "when recovering parser succeeds without consuming" $ do           it "its result is returned (and state)" $             property $ \s -> do-              let p :: MonadParsec Void String m => m (Either (ParseError String Void) Char)+              let p :: (MonadParsec Void String m) => m (Either (ParseError String Void) Char)                   p = withRecovery (return . Left) empty               grs p s (`shouldParse` Left (err 0 mempty))               grs' p s (`succeedsLeaving` s)           it "original hints are preserved" $             property $ \a b as ->               a /= b ==> do-                let p :: MonadParsec Void String m => m (Either (ParseError String Void) String)+                let p :: (MonadParsec Void String m) => m (Either (ParseError String Void) String)                     p =                       withRecovery                         (return . Left)@@ -799,13 +799,13 @@         context "when recovering parser fails without consuming" $           it "the original parse error (and state) is reported" $             property $ \s -> do-              let p :: MonadParsec Void String m => m (Either (ParseError String Void) Char)+              let p :: (MonadParsec Void String m) => m (Either (ParseError String Void) Char)                   p = withRecovery (\e -> Left e <$ empty) empty               grs p s (`shouldFailWith` err 0 mempty)               grs' p s (`failsLeaving` s)       it "works in complex situations too" $         property $ \(NonNegative a) (NonNegative b) (NonNegative c) -> do-          let p :: MonadParsec Void String m => m (Either (ParseError String Void) String)+          let p :: (MonadParsec Void String m) => m (Either (ParseError String Void) String)               p =                 let g = count' 1 3 . char                  in v@@ -836,7 +836,7 @@       context "when inner parser succeeds consuming" $         it "returns its result in Right" $           property $ \a as -> do-            let p :: MonadParsec Void String m => m (Either (ParseError String Void) Char)+            let p :: (MonadParsec Void String m) => m (Either (ParseError String Void) Char)                 p = observing (char a)                 s = a : as             grs p s (`shouldParse` Right a)@@ -845,7 +845,7 @@         it "returns its parse error in Left preserving state" $           property $ \a b c as ->             b /= c ==> do-              let p :: MonadParsec Void String m => m (Either (ParseError String Void) Char)+              let p :: (MonadParsec Void String m) => m (Either (ParseError String Void) Char)                   p = observing (char a *> char b)                   s = a : c : as               grs p s (`shouldParse` Left (err 1 (utok c <> etok b)))@@ -853,7 +853,7 @@         it "does not create any hints" $           property $ \a b c as ->             b /= c ==> do-              let p :: MonadParsec Void String m => m (Either (ParseError String Void) Char)+              let p :: (MonadParsec Void String m) => m (Either (ParseError String Void) Char)                   p = observing (char a *> char b) *> empty                   s = a : c : as               grs p s (`shouldFailWith` err 1 mempty)@@ -861,21 +861,21 @@       context "when inner parser succeeds without consuming" $         it "returns its result in Right" $           property $ \a s -> do-            let p :: MonadParsec Void String m => m (Either (ParseError String Void) Char)+            let p :: (MonadParsec Void String m) => m (Either (ParseError String Void) Char)                 p = observing (return a)             grs p s (`shouldParse` Right a)             grs' p s (`succeedsLeaving` s)       context "when inner parser fails without consuming" $ do         it "returns its parse error in Left preserving state" $           property $ \s -> do-            let p :: MonadParsec Void String m => m (Either (ParseError String Void) ())+            let p :: (MonadParsec Void String m) => m (Either (ParseError String Void) ())                 p = observing empty             grs p s (`shouldParse` Left (err 0 mempty))             grs' p s (`succeedsLeaving` s)         it "creates correct hints" $           property $ \a b as ->             a /= b ==> do-              let p :: MonadParsec Void String m => m (Either (ParseError String Void) Char)+              let p :: (MonadParsec Void String m) => m (Either (ParseError String Void) Char)                   p = observing (char a) <* empty                   s = b : as               grs p s (`shouldFailWith` err 0 (etok a))@@ -898,7 +898,7 @@       context "when supplied predicate is satisfied" $         it "succeeds" $           property $ \a as -> do-            let p :: MonadParsec Void String m => m Char+            let p :: (MonadParsec Void String m) => m Char                 p = token (testChar a) (expected a)                 s = a : as             grs p s (`shouldParse` a)@@ -907,7 +907,7 @@         it "signals correct parse error" $           property $ \a b as ->             a /= b ==> do-              let p :: MonadParsec Void String m => m Char+              let p :: (MonadParsec Void String m) => m Char                   p = token (testChar b) (expected b)                   s = a : as                   us = pure (Tokens $ nes a)@@ -917,7 +917,7 @@       context "when stream is empty" $         it "signals correct parse error" $           property $ \a -> do-            let p :: MonadParsec Void String m => m Char+            let p :: (MonadParsec Void String m) => m Char                 p = token (testChar a) ps                 us = pure EndOfInput                 ps = expected a@@ -927,7 +927,7 @@       context "when stream is prefixed with given string" $         it "parses the string" $           property $ \str s -> do-            let p :: MonadParsec Void String m => m String+            let p :: (MonadParsec Void String m) => m String                 p = tokens (==) str                 s' = str ++ s             grs p s' (`shouldParse` str)@@ -936,7 +936,7 @@         it "signals correct parse error" $           property $ \str s ->             not (str `isPrefixOf` s) ==> do-              let p :: MonadParsec Void String m => m String+              let p :: (MonadParsec Void String m) => m String                   p = tokens (==) str                   z = take (length str) s               grs p s (`shouldFailWith` err 0 (utoks z <> etoks str))@@ -944,7 +944,7 @@       context "when matching the empty string" $         it "eok continuation is used" $           property $ \str s -> do-            let p :: MonadParsec Void String m => m String+            let p :: (MonadParsec Void String m) => m String                 p = (tokens (==) "" <* empty) <|> pure str             grs p s (`shouldParse` str)             grs' p s (`succeedsLeaving` s)@@ -954,19 +954,19 @@         it "consumes all matching tokens, zero or more" $           property $ \s ->             not (null s) ==> do-              let p :: MonadParsec Void String m => m String+              let p :: (MonadParsec Void String m) => m String                   p = takeWhileP Nothing isLetter                   (z, zs) = DL.span isLetter s               grs p s (`shouldParse` z)               grs' p s (`succeedsLeaving` zs)       context "when stream is empty" $         it "succeeds returning empty chunk" $ do-          let p :: MonadParsec Void String m => m String+          let p :: (MonadParsec Void String m) => m String               p = takeWhileP Nothing isLetter           grs p "" (`shouldParse` "")           grs' p "" (`succeedsLeaving` "")       context "with two takeWhileP in a row (testing hints)" $ do-        let p :: MonadParsec Void String m => m String+        let p :: (MonadParsec Void String m) => m String             p = do               void $ takeWhileP (Just "foo") (== 'a')               void $ takeWhileP (Just "bar") (== 'b')@@ -985,7 +985,7 @@             grs' p s (`failsLeaving` "")       context "without label (testing hints)" $         it "there are no hints" $ do-          let p :: MonadParsec Void String m => m String+          let p :: (MonadParsec Void String m) => m String               p = takeWhileP Nothing (== 'a') <* empty               s = "aaa"           grs p s (`shouldFailWith` err 3 mempty)@@ -995,7 +995,7 @@       context "when stream is prefixed with matching tokens" $         it "consumes the tokens" $           property $ \s' -> do-            let p :: MonadParsec Void String m => m String+            let p :: (MonadParsec Void String m) => m String                 p = takeWhile1P Nothing isLetter                 s = 'a' : s'                 (z, zs) = DL.span isLetter s@@ -1004,7 +1004,7 @@       context "when stream is not prefixed with at least one matching token" $         it "signals correct parse error" $           property $ \s' -> do-            let p :: MonadParsec Void String m => m String+            let p :: (MonadParsec Void String m) => m String                 p = takeWhile1P (Just "foo") isLetter                 s = '3' : s'                 pe = err 0 (utok '3' <> elabel "foo")@@ -1013,20 +1013,20 @@       context "when stream is empty" $ do         context "with label" $           it "signals correct parse error" $ do-            let p :: MonadParsec Void String m => m String+            let p :: (MonadParsec Void String m) => m String                 p = takeWhile1P (Just "foo") isLetter                 pe = err 0 (ueof <> elabel "foo")             grs p "" (`shouldFailWith` pe)             grs' p "" (`failsLeaving` "")         context "without label" $           it "signals correct parse error" $ do-            let p :: MonadParsec Void String m => m String+            let p :: (MonadParsec Void String m) => m String                 p = takeWhile1P Nothing isLetter                 pe = err 0 ueof             grs p "" (`shouldFailWith` pe)             grs' p "" (`failsLeaving` "")       context "with two takeWhile1P in a row (testing hints)" $ do-        let p :: MonadParsec Void String m => m String+        let p :: (MonadParsec Void String m) => m String             p = do               void $ takeWhile1P (Just "foo") (== 'a')               void $ takeWhile1P (Just "bar") (== 'b')@@ -1045,7 +1045,7 @@             grs' p s (`failsLeaving` "")       context "without label (testing hints)" $         it "there are no hints" $ do-          let p :: MonadParsec Void String m => m String+          let p :: (MonadParsec Void String m) => m String               p = takeWhile1P Nothing (== 'a') <* empty               s = "aaa"           grs p s (`shouldFailWith` err 3 mempty)@@ -1055,14 +1055,14 @@       context "when taking 0 tokens" $ do         context "when stream is empty" $           it "succeeds returning zero-length chunk" $ do-            let p :: MonadParsec Void String m => m String+            let p :: (MonadParsec Void String m) => m String                 p = takeP Nothing 0             grs p "" (`shouldParse` "")         context "when stream is not empty" $           it "succeeds returning zero-length chunk" $             property $ \s ->               not (null s) ==> do-                let p :: MonadParsec Void String m => m String+                let p :: (MonadParsec Void String m) => m String                     p = takeP Nothing 0                 grs p s (`shouldParse` "")                 grs' p s (`succeedsLeaving` s)@@ -1070,14 +1070,14 @@         context "when stream is empty" $           it "succeeds returning zero-length chunk" $             property $ \(Negative n) -> do-              let p :: MonadParsec Void String m => m String+              let p :: (MonadParsec Void String m) => m String                   p = takeP Nothing n               grs p "" (`shouldParse` "")         context "when stream is not empty" $           it "succeeds returning zero-length chunk" $             property $ \(Negative n) s ->               not (null s) ==> do-                let p :: MonadParsec Void String m => m String+                let p :: (MonadParsec Void String m) => m String                     p = takeP Nothing n                 grs p s (`shouldParse` "")                 grs' p s (`succeedsLeaving` s)@@ -1086,7 +1086,7 @@           context "with label" $             it "signals correct parse error" $               property $ \(Positive n) -> do-                let p :: MonadParsec Void String m => m String+                let p :: (MonadParsec Void String m) => m String                     p = takeP (Just "foo") n                     pe = err 0 (ueof <> elabel "foo")                 grs p "" (`shouldFailWith` pe)@@ -1094,14 +1094,14 @@           context "without label" $             it "signals correct parse error" $               property $ \(Positive n) -> do-                let p :: MonadParsec Void String m => m String+                let p :: (MonadParsec Void String m) => m String                     p = takeP Nothing n                     pe = err 0 ueof                 grs p "" (`shouldFailWith` pe)         context "when stream has not enough tokens" $           it "signals correct parse error" $             property $ \(Positive n) s -> do-              let p :: MonadParsec Void String m => m String+              let p :: (MonadParsec Void String m) => m String                   p = takeP (Just "foo") n                   m = length s                   pe = err m (ueof <> elabel "foo")@@ -1112,7 +1112,7 @@           it "succeeds returning the extracted tokens" $             property $ \(Positive n) s ->               length s >= n ==> do-                let p :: MonadParsec Void String m => m String+                let p :: (MonadParsec Void String m) => m String                     p = takeP (Just "foo") n                     (s0, s1) = splitAt n s                 grs p s (`shouldParse` s0)@@ -1121,7 +1121,7 @@         it "there are no hints to influence the parse error" $           property $ \(Positive n) s ->             length s >= n ==> do-              let p :: MonadParsec Void String m => m String+              let p :: (MonadParsec Void String m) => m String                   p = takeP (Just "foo") n <* empty                   pe = err n mempty               grs p s (`shouldFailWith` pe)@@ -1131,28 +1131,28 @@     describe "failure" $       it "signals correct parse error" $         property $ \us ps -> do-          let p :: MonadParsec Void String m => m ()+          let p :: (MonadParsec Void String m) => m ()               p = void (failure us ps)           grs p "" (`shouldFailWith` TrivialError 0 us ps)      describe "fancyFailure" $       it "singals correct parse error" $         property $ \xs -> do-          let p :: MonadParsec Void String m => m ()+          let p :: (MonadParsec Void String m) => m ()               p = void (fancyFailure xs)           grs p "" (`shouldFailWith` FancyError 0 xs)      describe "unexpected" $       it "signals correct parse error" $         property $ \item -> do-          let p :: MonadParsec Void String m => m ()+          let p :: (MonadParsec Void String m) => m ()               p = void (unexpected item)           grs p "" (`shouldFailWith` TrivialError 0 (pure item) E.empty)      describe "customFailure" $       it "signals correct parse error" $         property $ \n st -> do-          let p :: MonadParsec Int String m => m ()+          let p :: (MonadParsec Int String m) => m ()               p = void (customFailure n)               xs = E.singleton (ErrorCustom n)           runParser p "" (stateInput st) `shouldFailWith` FancyError 0 xs@@ -1209,7 +1209,7 @@     describe "registerParseError" $ do       it "immediately fails with given parse error" $         property $ \st es -> do-          let p :: MonadParsec Void String m => m ()+          let p :: (MonadParsec Void String m) => m ()               p = forM_ (NE.reverse es) registerParseError               st' =                 st@@ -1223,14 +1223,14 @@     describe "registerFailure" $       it "signals correct parse error" $         property $ \us ps -> do-          let p :: MonadParsec Void String m => m ()+          let p :: (MonadParsec Void String m) => m ()               p = void (registerFailure us ps)           grs p "" (`shouldFailWith` TrivialError 0 us ps)      describe "reisterFancyFailure" $       it "singals correct parse error" $         property $ \xs -> do-          let p :: MonadParsec Void String m => m ()+          let p :: (MonadParsec Void String m) => m ()               p = void (registerFancyFailure xs)           grs p "" (`shouldFailWith` FancyError 0 xs) @@ -1239,7 +1239,7 @@     -- "Text.Megaparsec.Byte".      describe "anySingle" $ do-      let p :: MonadParsec Void String m => m Char+      let p :: (MonadParsec Void String m) => m Char           p = anySingle       context "when stream is not empty" $         it "succeeds consuming next character in the stream" $@@ -1255,7 +1255,7 @@       context "when stream begins with the character specified as argument" $         it "signals correct parse error" $           property $ \ch s' -> do-            let p :: MonadParsec Void String m => m Char+            let p :: (MonadParsec Void String m) => m Char                 p = anySingleBut ch                 s = ch : s'             grs p s (`shouldFailWith` err 0 (utok ch))@@ -1264,7 +1264,7 @@         it "parses first character in the stream" $           property $ \ch s ->             not (null s) && ch /= head s ==> do-              let p :: MonadParsec Void String m => m Char+              let p :: (MonadParsec Void String m) => m Char                   p = anySingleBut ch               grs p s (`shouldParse` head s)               grs' p s (`succeedsLeaving` tail s)@@ -1388,7 +1388,7 @@     describe "setParserState and getParserState" $       it "sets parser state and gets it back" $         property $ \s1 s2 -> do-          let p :: MonadParsec Void String m => m (State String Void)+          let p :: (MonadParsec Void String m) => m (State String Void)               p = do                 st <- getParserState                 guard (st == initialState s)