Skip to content

Commit 314393a

Browse files
committed
Update the StreamK.parseBreakChunks driver
1 parent 76b9c19 commit 314393a

File tree

1 file changed

+21
-15
lines changed

1 file changed

+21
-15
lines changed

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

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1337,28 +1337,31 @@ parseBreakChunks parser input = do
13371337
-- If we stop in an alternative, it will try calling the next
13381338
-- parser, the next parser may call initial returning Partial and
13391339
-- then immediately we have to call extract on it.
1340-
ParserK.Partial 0 cont1 ->
1340+
ParserK.SPartial (-1) cont1 ->
13411341
go [] cont1 nil
1342-
ParserK.Partial n cont1 -> do
1343-
let n1 = negate n
1342+
ParserK.SPartial m cont1 -> do
1343+
let n = m + 1
1344+
n1 = negate n
13441345
assertM(n1 >= 0 && n1 <= sum (Prelude.map Array.length backBuf))
13451346
let (s1, backBuf1) = backTrack n1 backBuf nil
13461347
in go backBuf1 cont1 s1
1347-
ParserK.Continue 0 cont1 ->
1348+
ParserK.SContinue (-1) cont1 ->
13481349
go backBuf cont1 nil
1349-
ParserK.Continue n cont1 -> do
1350-
let n1 = negate n
1350+
ParserK.SContinue m cont1 -> do
1351+
let n = m + 1
1352+
n1 = negate n
13511353
assertM(n1 >= 0 && n1 <= sum (Prelude.map Array.length backBuf))
13521354
let (s1, backBuf1) = backTrack n1 backBuf nil
13531355
in go backBuf1 cont1 s1
1354-
ParserK.Done 0 b ->
1356+
ParserK.SDone (-1) b ->
13551357
return (Right b, nil)
1356-
ParserK.Done n b -> do
1357-
let n1 = negate n
1358+
ParserK.SDone m b -> do
1359+
let n = m + 1
1360+
n1 = negate n
13581361
assertM(n1 >= 0 && n1 <= sum (Prelude.map Array.length backBuf))
13591362
let (s1, _) = backTrack n1 backBuf nil
13601363
in return (Right b, s1)
1361-
ParserK.Error _ err -> do
1364+
ParserK.SError _ err -> do
13621365
let (s1, _) = backTrack maxBound backBuf nil
13631366
return (Left (ParseError err), s1)
13641367

@@ -1370,7 +1373,8 @@ parseBreakChunks parser input = do
13701373
pRes <- parserk (ParserK.Chunk arr)
13711374
let len = Array.length arr
13721375
case pRes of
1373-
ParserK.Partial n cont1 ->
1376+
ParserK.SPartial m cont1 -> do
1377+
let n = m + 1
13741378
case compare n len of
13751379
EQ -> go [] cont1 stream
13761380
LT -> do
@@ -1384,7 +1388,8 @@ parseBreakChunks parser input = do
13841388
let (s1, _) = backTrack n1 backBuf s
13851389
go [] cont1 s1
13861390
GT -> seekErr n len
1387-
ParserK.Continue n cont1 ->
1391+
ParserK.SContinue m cont1 -> do
1392+
let n = m + 1
13881393
case compare n len of
13891394
EQ -> go (arr:backBuf) cont1 stream
13901395
LT -> do
@@ -1398,12 +1403,13 @@ parseBreakChunks parser input = do
13981403
let (s1, backBuf1) = backTrack n1 backBuf s
13991404
go backBuf1 cont1 s1
14001405
GT -> seekErr n len
1401-
ParserK.Done n b -> do
1402-
let n1 = len - n
1406+
ParserK.SDone m b -> do
1407+
let n = m + 1
1408+
n1 = len - n
14031409
assertM(n1 <= sum (Prelude.map Array.length (arr:backBuf)))
14041410
let (s1, _) = backTrack n1 (arr:backBuf) stream
14051411
in return (Right b, s1)
1406-
ParserK.Error _ err -> do
1412+
ParserK.SError _ err -> do
14071413
let (s1, _) = backTrack maxBound (arr:backBuf) stream
14081414
return (Left (ParseError err), s1)
14091415

0 commit comments

Comments
 (0)