@@ -1,6 +1,3 @@
2−{-# LANGUAGE FlexibleContexts #-}
4#ifdef __HADDOCK_VERSION__
1#ifdef __HADDOCK_VERSION__
5#undef INSPECTION
2#undef INSPECTION
@@ -54,7 +51,7 @@ import Test.Inspection (inspect, hasNoTypeClassesExcept)
55-- | Pull a stream from an SVar.
52-- | Pull a stream from an SVar.
56{-# NOINLINE fromStreamVar #-}
53{-# NOINLINE fromStreamVar #-}
57−fromStreamVar :: MonadAsync m => SVar Stream m a -> Stream m a
54+fromStreamVar :: forall m a . MonadAsync m => SVar Stream m a -> Stream m a
58fromStreamVar sv = MkStream $ \st yld sng stp -> do
55fromStreamVar sv = MkStream $ \st yld sng stp -> do
59 list <- readOutputQ sv
56 list <- readOutputQ sv
60 -- Reversing the output is important to guarantee that we process the
57 -- Reversing the output is important to guarantee that we process the
@@ -63,7 +60,7 @@ fromStreamVar sv = MkStream $ \st yld sng stp -> do
63 foldStream st yld sng stp $ processEvents $ reverse list
60 foldStream st yld sng stp $ processEvents $ reverse list
66−
63+ allDone :: m r -> m r
67 allDone stp = do
64 allDone stp = do
68 when (svarInspectMode sv) $ do
65 when (svarInspectMode sv) $ do
69 t <- liftIO $ getTime Monotonic
66 t <- liftIO $ getTime Monotonic
@@ -72,6 +69,7 @@ fromStreamVar sv = MkStream $ \st yld sng stp -> do
74 {-# INLINE processEvents #-}
71 {-# INLINE processEvents #-}
72+ processEvents :: [ChildEvent a] -> Stream m a
75 processEvents [] = MkStream $ \st yld sng stp -> do
73 processEvents [] = MkStream $ \st yld sng stp -> do
76 done <- postProcess sv
74 done <- postProcess sv
@@ -95,6 +93,7 @@ fromStreamVar sv = MkStream $ \st yld sng stp -> do
95 Just ThreadAbort ->
93 Just ThreadAbort ->
96 foldStream st yld sng stp rest
94 foldStream st yld sng stp rest
97 Nothing -> liftIO (cleanupSVar sv) >> throwM ex
95 Nothing -> liftIO (cleanupSVar sv) >> throwM ex
98 shouldStop tid =
97 shouldStop tid =
99 case svarStopStyle sv of
98 case svarStopStyle sv of
100 StopNone -> return False
99 StopNone -> return False
@@ -157,7 +156,7 @@ toSVar sv m = toStreamVar sv (toStream m)
158-- | Pull a stream from an SVar.
157-- | Pull a stream from an SVar.
159{-# NOINLINE fromProducer #-}
158{-# NOINLINE fromProducer #-}
160−fromProducer :: MonadAsync m => SVar Stream m a -> Stream m a
159+fromProducer :: forall m a . MonadAsync m => SVar Stream m a -> Stream m a
161fromProducer sv = mkStream $ \st yld sng stp -> do
160fromProducer sv = mkStream $ \st yld sng stp -> do
162 list <- readOutputQ sv
161 list <- readOutputQ sv
163 -- Reversing the output is important to guarantee that we process the
162 -- Reversing the output is important to guarantee that we process the
@@ -167,6 +166,7 @@ fromProducer sv = mkStream $ \st yld sng stp -> do
169+ allDone :: m r -> m r
170 allDone stp = do
170 allDone stp = do
171 when (svarInspectMode sv) $ do
171 when (svarInspectMode sv) $ do
172 t <- liftIO $ getTime Monotonic
172 t <- liftIO $ getTime Monotonic
@@ -176,6 +176,7 @@ fromProducer sv = mkStream $ \st yld sng stp -> do
178 {-# INLINE processEvents #-}
178 {-# INLINE processEvents #-}
179+ processEvents :: [ChildEvent a] -> Stream m a
179 processEvents [] = mkStream $ \st yld sng stp -> do
180 processEvents [] = mkStream $ \st yld sng stp -> do
180 foldStream st yld sng stp $ fromProducer sv
181 foldStream st yld sng stp $ fromProducer sv