megaparsec 6.1.0 → 6.1.1
raw patch · 4 files changed
+18/−3 lines, 4 files
Files
- CHANGELOG.md +5/−0
- Text/Megaparsec.hs +5/−2
- megaparsec.cabal +1/−1
- tests/Text/MegaparsecSpec.hs +7/−0
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" $