packages feed

megaparsec 6.1.0 → 6.1.1

raw patch · 4 files changed

+18/−3 lines, 4 files

Files

CHANGELOG.md view
@@ -1,3 +1,8 @@+## Megaparsec 6.1.1++* Fixed the bug when `tokens` used `cok` continuation even when matching an+  empty chunk. Now it correctly uses `eok` in this case.+ ## Megaparsec 6.1.0  * Improved rendering of offending line in `parseErrorPretty'` in the
Text/Megaparsec.hs view
@@ -999,7 +999,7 @@   => (Tokens s -> Tokens s -> Bool)   -> Tokens s   -> ParsecT e s m (Tokens s)-pTokens f tts = ParsecT $ \s@(State input (pos:|z) tp w) cok _ _ eerr ->+pTokens f tts = ParsecT $ \s@(State input (pos:|z) tp w) cok _ eok eerr ->   let pxy = Proxy :: Proxy s       unexpect pos' u =         let us = pure u@@ -1012,7 +1012,10 @@     Just (tts', input') ->       if f tts tts'         then let !npos = advanceN pxy w pos tts'-             in cok tts' (State input' (npos:|z) (tp + len) w) mempty+                 st    = State input' (npos:|z) (tp + len) w+             in if chunkEmpty pxy tts+                  then eok tts' st mempty+                  else cok tts' st mempty         else let !apos = positionAtN pxy pos tts'                  ps = (Tokens . NE.fromList . chunkToTokens pxy) tts'              in eerr (unexpect (apos:|z) ps) (State input (apos:|z) tp w)
megaparsec.cabal view
@@ -1,5 +1,5 @@ name:                 megaparsec-version:              6.1.0+version:              6.1.1 cabal-version:        >= 1.18 tested-with:          GHC==7.8.4, GHC==7.10.3, GHC==8.0.2, GHC==8.2.1 license:              BSD2
tests/Text/MegaparsecSpec.hs view
@@ -1017,6 +1017,13 @@                 z = take (length str) s             grs  p s (`shouldFailWith` err posI (utoks z <> etoks str))             grs' p s (`failsLeaving` s)+      context "when matching the empty string" $+        it "eok continuation is used" $+          property $ \str s -> do+            let p :: MonadParsec Void String m => m String+                p = (tokens (==) "" <* empty) <|> pure str+            grs  p s (`shouldParse` str)+            grs' p s (`succeedsLeaving` s)      describe "takeWhileP" $ do       context "when stream is not empty" $