megaparsec 7.0.0 → 7.0.1
raw patch · 4 files changed
+20/−15 lines, 4 files
Files
- CHANGELOG.md +5/−0
- Text/Megaparsec/Error.hs +10/−10
- megaparsec.cabal +1/−1
- tests/Text/Megaparsec/ErrorSpec.hs +4/−4
CHANGELOG.md view
@@ -1,3 +1,8 @@+## Megaparsec 7.0.1++* Fixed a bug in `errorBundlePretty`. Previously the question sign `?` was+ erroneously inserted before offending line in 2nd and later parse errors.+ ## Megaparsec 7.0.0 ### General
Text/Megaparsec/Error.hs view
@@ -343,24 +343,24 @@ f (o, !pst) e = (o . (outChunk ++), pst') where (epos, sline, pst') = reachOffset (errorOffset e) pst- ppos = pstateSourcePos pst outChunk = "\n" <> sourcePosPretty epos <> ":\n" <> padding <> "|\n" <>- lineNumber <> " | " <> gpadding <> sline <> "\n" <>+ lineNumber <> " | " <> sline <> "\n" <> padding <> "| " <> rpadding <> pointer <> "\n" <> parseErrorTextPretty e lineNumber = (show . unPos . sourceLine) epos padding = replicate (length lineNumber + 1) ' '- gpadding = replicate gpshift '?'- gpshift = unPos (sourceColumn ppos) - 1- rpadding = replicate rpshift ' '+ rpadding =+ if pointerLen > 0+ then replicate rpshift ' '+ else "" rpshift = unPos (sourceColumn epos) - 1- pointer = replicate- (if rpshift + elen > gpshift + slineLen- then gpshift + slineLen - rpshift + 1- else elen)- '^'+ pointer = replicate pointerLen '^'+ pointerLen =+ if rpshift + elen > slineLen+ then slineLen - rpshift + 1+ else elen slineLen = length sline elen = case e of
megaparsec.cabal view
@@ -1,5 +1,5 @@ name: megaparsec-version: 7.0.0+version: 7.0.1 cabal-version: 1.18 tested-with: GHC==7.10.3, GHC==8.0.2, GHC==8.2.2, GHC==8.4.3 license: BSD2
tests/Text/Megaparsec/ErrorSpec.hs view
@@ -151,7 +151,7 @@ } } errorBundlePretty bundle `shouldBe`- "1:6:\n |\n1 | ????foo\n | ^\nunexpected 'o'\nexpecting 'x'\n"+ "1:6:\n |\n1 | foo\n | \nunexpected 'o'\nexpecting 'x'\n" context "and greater than parse error column" $ it "is rendered correctly" $ do let s = "foo" :: String@@ -167,7 +167,7 @@ } } errorBundlePretty bundle `shouldBe`- "1:10:\n |\n1 | ?????????foo\n | ^\nunexpected 'o'\nexpecting 'x'\n"+ "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@@ -190,7 +190,7 @@ "\n | " ++ tabRep ++ "^\nunexpected 's'\nexpecting 'x'\n") it "displays multi-error bundle correctly" $ do let s = "something\ngood\n" :: String- pe0 = err 0 (utok 's' <> etok 'x') :: PE+ pe0 = err 2 (utok 'm' <> etok 'x') :: PE pe1 = err 10 (utok 'g' <> etok 'y') :: PE bundle = ParseErrorBundle { bundleErrors = pe0 :| [pe1]@@ -203,7 +203,7 @@ } } errorBundlePretty bundle `shouldBe`- "1:1:\n |\n1 | something\n | ^\nunexpected 's'\nexpecting 'x'\n\n2:1:\n |\n2 | good\n | ^\nunexpected 'g'\nexpecting 'y'\n"+ "1:3:\n |\n1 | something\n | ^\nunexpected 'm'\nexpecting 'x'\n\n2:1:\n |\n2 | good\n | ^\nunexpected 'g'\nexpecting 'y'\n" describe "parseErrorPretty" $ do it "shows unknown ParseError correctly" $