on master help sign in
Call all continuations when extracting

When extracting the parser value in fromParserK we need to continue calling the continuations and extracting until the parser finishes.

commita306a9ef2c23a96c8c3f6221d21b01e0bda46172 authorHarendra Kumar <harendra@composewell.com> dateWed 2 Sep 2020, 20:45 (6 years ago) parent6a6be9d
1 file changed+2−1
src/Streamly/Internal/Data/Parser/ParserK/Types.hs+2−1
src/Streamly/Internal/Data/Parser/ParserK/Types.hs+2−1
@@ -199,7 +199,7 @@ extractParse cont = do
199199 case r of
200200 Stop _ b -> return b
201201 Partial _ _ -> error "Bug: extractParse got Partial"
202− Continue _ _ -> error "Bug: extractParse got Continue"
202+ Continue _ cont1 -> extractParse cont1
203203 Failed e -> throwM $ D.ParseError e
204204
205205data FromParserK b e c = FPKDone !Int !b | FPKError !e | FPKCont c
@@ -240,6 +240,7 @@ fromParserK parser = D.Parser step initial extract
240240 Partial n cont1 -> D.Partial n (FPKCont cont1)
241241 Continue n cont1 -> D.Continue n (FPKCont cont1)
242242
243+ -- Note, we can only reach FPKDone and FPKError from "initial".
243244 extract (FPKDone _ b) = return b
244245 extract (FPKError e) = throwM $ D.ParseError e
245246 extract (FPKCont cont) = extractParse cont