on master help sign in
Use assertM instead of assert in Parser code
63ba027Harendra Kumar
core/src/Streamly/Internal/Data/Parser/ParserD.hs+9−8
@@ -196,11 +196,12 @@ module Streamly.Internal.Data.Parser.ParserD
196 )
196 )
197where
197where
198
198
199−import Control.Exception (assert, Exception)
199+import Control.Exception (Exception)
200import Control.Monad (when)
200import Control.Monad (when)
201import Control.Monad.Catch (MonadCatch, MonadThrow(..))
201import Control.Monad.Catch (MonadCatch, MonadThrow(..))
202import Data.Bifunctor (first)
202import Data.Bifunctor (first)
203import Fusion.Plugin.Types (Fuse(..))
203import Fusion.Plugin.Types (Fuse(..))
204+import Streamly.Internal.Control.Exception (assertM)
204import Streamly.Internal.Data.Fold.Type (Fold(..))
205import Streamly.Internal.Data.Fold.Type (Fold(..))
205import Streamly.Internal.Data.SVar.Type (defState)
206import Streamly.Internal.Data.SVar.Type (defState)
206import Streamly.Internal.Data.Either.Strict (Either'(..))
207import Streamly.Internal.Data.Either.Strict (Either'(..))
@@ -1704,17 +1705,17 @@ takeP lim (Parser pstep pinitial pextract) = Parser step initial extract
1704 IError e -> return $ IError e
1705 IError e -> return $ IError e
1705
1706
1706 step (Tuple' cnt r) a = do
1707 step (Tuple' cnt r) a = do
1707− assert (cnt < lim) (return ())
1708+ assertM (cnt < lim)
1708 res <- pstep r a
1709 res <- pstep r a
1709 let cnt1 = cnt + 1
1710 let cnt1 = cnt + 1
1710 case res of
1711 case res of
1711 Partial 0 s -> do
1712 Partial 0 s -> do
1712− assert (cnt1 >= 0) (return ())
1713+ assertM (cnt1 >= 0)
1713 if cnt1 < lim
1714 if cnt1 < lim
1714 then return $ Partial 0 $ Tuple' cnt1 s
1715 then return $ Partial 0 $ Tuple' cnt1 s
1715 else Done 0 <$> pextract s
1716 else Done 0 <$> pextract s
1716 Continue 0 s -> do
1717 Continue 0 s -> do
1717− assert (cnt1 >= 0) (return ())
1718+ assertM (cnt1 >= 0)
1718 if cnt1 < lim
1719 if cnt1 < lim
1719 then return $ Continue 0 $ Tuple' cnt1 s
1720 then return $ Continue 0 $ Tuple' cnt1 s
1720 -- XXX This should error out?
1721 -- XXX This should error out?
@@ -1731,11 +1732,11 @@ takeP lim (Parser pstep pinitial pextract) = Parser step initial extract
1731 else Done 0 <$> pextract s
1732 else Done 0 <$> pextract s
1732 Partial n s -> do
1733 Partial n s -> do
1733 let taken = cnt1 - n
1734 let taken = cnt1 - n
1734− assert (taken >= 0) (return ())
1735+ assertM (taken >= 0)
1735 return $ Partial n $ Tuple' taken s
1736 return $ Partial n $ Tuple' taken s
1736 Continue n s -> do
1737 Continue n s -> do
1737 let taken = cnt1 - n
1738 let taken = cnt1 - n
1738− assert (taken >= 0) (return ())
1739+ assertM (taken >= 0)
1739 return $ Continue n $ Tuple' taken s
1740 return $ Continue n $ Tuple' taken s
1740 Done n b -> return $ Done n b
1741 Done n b -> return $ Done n b
1741 Error str -> return $ Error str
1742 Error str -> return $ Error str
@@ -2130,7 +2131,7 @@ manyTill (Fold fstep finitial fextract)
2130 case r of
2131 case r of
2131 Partial n s -> return $ Partial n (ManyTillR 0 fs s)
2132 Partial n s -> return $ Partial n (ManyTillR 0 fs s)
2132 Continue n s -> do
2133 Continue n s -> do
2133− assert (cnt + 1 - n >= 0) (return ())
2134+ assertM (cnt + 1 - n >= 0)
2134 return $ Continue n (ManyTillR (cnt + 1 - n) fs s)
2135 return $ Continue n (ManyTillR (cnt + 1 - n) fs s)
2135 Done n _ -> do
2136 Done n _ -> do
2136 b <- fextract fs
2137 b <- fextract fs
@@ -2156,7 +2157,7 @@ manyTill (Fold fstep finitial fextract)
2156 case r of
2157 case r of
2157 Partial n s -> return $ Partial n (ManyTillL 0 fs s)
2158 Partial n s -> return $ Partial n (ManyTillL 0 fs s)
2158 Continue n s -> do
2159 Continue n s -> do
2159− assert (cnt + 1 - n >= 0) (return ())
2160+ assertM (cnt + 1 - n >= 0)
2160 return $ Continue n (ManyTillL (cnt + 1 - n) fs s)
2161 return $ Continue n (ManyTillL (cnt + 1 - n) fs s)
2161 Done n b -> do
2162 Done n b -> do
2162 fs1 <- fstep fs b
2163 fs1 <- fstep fs b
core/src/Streamly/Internal/Data/Parser/ParserD/Type.hs+17−17
@@ -208,7 +208,7 @@ module Streamly.Internal.Data.Parser.ParserD.Type
208where
208where
209
209
210import Control.Applicative (Alternative(..), liftA2)
210import Control.Applicative (Alternative(..), liftA2)
211−import Control.Exception (assert, Exception(..))
211+import Control.Exception (Exception(..))
212import Control.Monad (MonadPlus(..), (>=>))
212import Control.Monad (MonadPlus(..), (>=>))
213import Control.Monad.IO.Class (MonadIO, liftIO)
213import Control.Monad.IO.Class (MonadIO, liftIO)
214import Control.Monad.Reader.Class (MonadReader, ask, local)
214import Control.Monad.Reader.Class (MonadReader, ask, local)
@@ -505,15 +505,15 @@ parseDToK pstep initial extract leftover (level, count) cont = do
505 pRes <- pstep r x
505 pRes <- pstep r x
506 case pRes of
506 case pRes of
507 Done n b -> do
507 Done n b -> do
508− assert (n <= cnt1) (return ())
508+ assertM (n <= cnt1)
509 cont (level, cnt1 - n) (K.Success n b)
509 cont (level, cnt1 - n) (K.Success n b)
510 Error err ->
510 Error err ->
511 cont (level, cnt1) (K.Failure err)
511 cont (level, cnt1) (K.Failure err)
512 Partial n pst1 -> do
512 Partial n pst1 -> do
513− assert (n <= cnt1) (return ())
513+ assertM (n <= cnt1)
514 return $ K.Partial n (parseCont (cnt1 - n) (return pst1))
514 return $ K.Partial n (parseCont (cnt1 - n) (return pst1))
515 Continue n pst1 -> do
515 Continue n pst1 -> do
516− assert (n <= cnt1) (return ())
516+ assertM (n <= cnt1)
517 return $ K.Continue n (parseCont (cnt1 - n) (return pst1))
517 return $ K.Continue n (parseCont (cnt1 - n) (return pst1))
518 parseCont cnt acc Nothing = do
518 parseCont cnt acc Nothing = do
519 pst <- acc
519 pst <- acc
@@ -981,7 +981,7 @@ alt (Parser stepL initialL extractL) (Parser stepR initialR extractR) =
981 case r of
981 case r of
982 Partial n s -> return $ Partial n (AltParseL 0 s)
982 Partial n s -> return $ Partial n (AltParseL 0 s)
983 Continue n s -> do
983 Continue n s -> do
984− assert (cnt + 1 - n >= 0) (return ())
984+ assertM (cnt + 1 - n >= 0)
985 return $ Continue n (AltParseL (cnt + 1 - n) s)
985 return $ Continue n (AltParseL (cnt + 1 - n) s)
986 Done n b -> return $ Done n b
986 Done n b -> return $ Done n b
987 Error _ -> do
987 Error _ -> do
@@ -1038,13 +1038,13 @@ splitMany (Parser step1 initial1 extract1) (Fold fstep finitial fextract) =
1038 let cnt1 = cnt + 1
1038 let cnt1 = cnt + 1
1039 case r of
1039 case r of
1040 Partial n s -> do
1040 Partial n s -> do
1041− assert (cnt1 - n >= 0) (return ())
1041+ assertM (cnt1 - n >= 0)
1042 return $ Continue n (Tuple3' s (cnt1 - n) fs)
1042 return $ Continue n (Tuple3' s (cnt1 - n) fs)
1043 Continue n s -> do
1043 Continue n s -> do
1044− assert (cnt1 - n >= 0) (return ())
1044+ assertM (cnt1 - n >= 0)
1045 return $ Continue n (Tuple3' s (cnt1 - n) fs)
1045 return $ Continue n (Tuple3' s (cnt1 - n) fs)
1046 Done n b -> do
1046 Done n b -> do
1047− assert (cnt1 - n >= 0) (return ())
1047+ assertM (cnt1 - n >= 0)
1048 fstep fs b >>= handleCollect (Partial n) (Done n)
1048 fstep fs b >>= handleCollect (Partial n) (Done n)
1049 Error _ -> do
1049 Error _ -> do
1050 xs <- fextract fs
1050 xs <- fextract fs
@@ -1098,13 +1098,13 @@ splitManyPost (Parser step1 initial1 extract1) (Fold fstep finitial fextract) =
1098 let cnt1 = cnt + 1
1098 let cnt1 = cnt + 1
1099 case r of
1099 case r of
1100 Partial n s -> do
1100 Partial n s -> do
1101− assert (cnt1 - n >= 0) (return ())
1101+ assertM (cnt1 - n >= 0)
1102 return $ Continue n (Tuple3' s (cnt1 - n) fs)
1102 return $ Continue n (Tuple3' s (cnt1 - n) fs)
1103 Continue n s -> do
1103 Continue n s -> do
1104− assert (cnt1 - n >= 0) (return ())
1104+ assertM (cnt1 - n >= 0)
1105 return $ Continue n (Tuple3' s (cnt1 - n) fs)
1105 return $ Continue n (Tuple3' s (cnt1 - n) fs)
1106 Done n b -> do
1106 Done n b -> do
1107− assert (cnt1 - n >= 0) (return ())
1107+ assertM (cnt1 - n >= 0)
1108 fstep fs b >>= handleCollect (Partial n) (Done n)
1108 fstep fs b >>= handleCollect (Partial n) (Done n)
1109 Error _ -> do
1109 Error _ -> do
1110 xs <- fextract fs
1110 xs <- fextract fs
@@ -1171,13 +1171,13 @@ splitSome (Parser step1 initial1 extract1) (Fold fstep finitial fextract) =
1171 let cnt1 = cnt + 1
1171 let cnt1 = cnt + 1
1172 case r of
1172 case r of
1173 Partial n s -> do
1173 Partial n s -> do
1174− assert (cnt1 - n >= 0) (return ())
1174+ assertM (cnt1 - n >= 0)
1175 return $ Continue n (Tuple3' s (cnt1 - n) (Left fs))
1175 return $ Continue n (Tuple3' s (cnt1 - n) (Left fs))
1176 Continue n s -> do
1176 Continue n s -> do
1177− assert (cnt1 - n >= 0) (return ())
1177+ assertM (cnt1 - n >= 0)
1178 return $ Continue n (Tuple3' s (cnt1 - n) (Left fs))
1178 return $ Continue n (Tuple3' s (cnt1 - n) (Left fs))
1179 Done n b -> do
1179 Done n b -> do
1180− assert (cnt1 - n >= 0) (return ())
1180+ assertM (cnt1 - n >= 0)
1181 fstep fs b >>= handleCollect (Partial n) (Done n)
1181 fstep fs b >>= handleCollect (Partial n) (Done n)
1182 Error err -> return $ Error err
1182 Error err -> return $ Error err
1183 step (Tuple3' st cnt (Right fs)) a = do
1183 step (Tuple3' st cnt (Right fs)) a = do
@@ -1185,13 +1185,13 @@ splitSome (Parser step1 initial1 extract1) (Fold fstep finitial fextract) =
1185 let cnt1 = cnt + 1
1185 let cnt1 = cnt + 1
1186 case r of
1186 case r of
1187 Partial n s -> do
1187 Partial n s -> do
1188− assert (cnt1 - n >= 0) (return ())
1188+ assertM (cnt1 - n >= 0)
1189 return $ Partial n (Tuple3' s (cnt1 - n) (Right fs))
1189 return $ Partial n (Tuple3' s (cnt1 - n) (Right fs))
1190 Continue n s -> do
1190 Continue n s -> do
1191− assert (cnt1 - n >= 0) (return ())
1191+ assertM (cnt1 - n >= 0)
1192 return $ Continue n (Tuple3' s (cnt1 - n) (Right fs))
1192 return $ Continue n (Tuple3' s (cnt1 - n) (Right fs))
1193 Done n b -> do
1193 Done n b -> do
1194− assert (cnt1 - n >= 0) (return ())
1194+ assertM (cnt1 - n >= 0)
1195 fstep fs b >>= handleCollect (Partial n) (Done n)
1195 fstep fs b >>= handleCollect (Partial n) (Done n)
1196 Error _ -> Done cnt1 <$> fextract fs
1196 Error _ -> Done cnt1 <$> fextract fs
1197
1197