Skip to content

Commit ddfe7ae

Browse files
committed
Fix bugs in important one shot ParserK drivers
1 parent 7d7c814 commit ddfe7ae

1 file changed

Lines changed: 18 additions & 4 deletions

File tree

core/src/Streamly/Internal/Data/StreamK.hs

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1481,7 +1481,9 @@ parseBreak parser input = do
14811481
assertM(n1 >= 0 && n1 <= length backBuf)
14821482
let (s1, _) = backTrackSingular n1 backBuf nil
14831483
in return (Right b, s1)
1484-
ParserK.Error _ err -> return (Left (ParseError err), nil)
1484+
ParserK.Error _ err ->
1485+
let strm = fromList (Prelude.reverse backBuf)
1486+
in return (Left (ParseError err), strm)
14851487

14861488
seekErr n =
14871489
error $ "parseBreak: Partial: forward seek not implemented n = "
@@ -1529,7 +1531,12 @@ parseBreak parser input = do
15291531
assertM(n1 >= 0 && n1 <= bufLen)
15301532
let (s1, _) = backTrackSingular n1 backBuf s
15311533
pure (Right b, s1)
1532-
ParserK.Error _ err -> return (Left (ParseError err), nil)
1534+
ParserK.Error _ err ->
1535+
let strm =
1536+
append
1537+
(fromList (Prelude.reverse backBuf))
1538+
(cons element stream)
1539+
in return (Left (ParseError err), strm)
15331540

15341541
go
15351542
:: [a]
@@ -1622,7 +1629,9 @@ parseBreakChunksGeneric parser input = do
16221629
assertM(n1 >= 0 && n1 <= sum (Prelude.map GenArr.length backBuf))
16231630
let (s1, _) = backTrackGenericChunks n1 backBuf nil
16241631
in return (Right b, s1)
1625-
ParserK.Error _ err -> return (Left (ParseError err), nil)
1632+
ParserK.Error _ err ->
1633+
let strm = fromList (Prelude.reverse backBuf)
1634+
in return (Left (ParseError err), strm)
16261635

16271636
seekErr n len =
16281637
error $ "parseBreak: Partial: forward seek not implemented n = "
@@ -1672,7 +1681,12 @@ parseBreakChunksGeneric parser input = do
16721681
assertM(n1 <= sum (Prelude.map GenArr.length (arr:backBuf)))
16731682
let (s1, _) = backTrackGenericChunks n1 (arr:backBuf) stream
16741683
in return (Right b, s1)
1675-
ParserK.Error _ err -> return (Left (ParseError err), nil)
1684+
ParserK.Error _ err ->
1685+
let strm =
1686+
append
1687+
(fromList (Prelude.reverse backBuf))
1688+
(cons arr stream)
1689+
in return (Left (ParseError err), strm)
16761690

16771691
go
16781692
:: [GenArr.Array a]

0 commit comments

Comments
 (0)