conduit 1.2.12 → 1.2.12.1
raw patch · 4 files changed
+23/−8 lines, 4 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- ChangeLog.md +4/−0
- Data/Conduit/Internal/Conduit.hs +11/−7
- conduit.cabal +1/−1
- test/main.hs +7/−0
ChangeLog.md view
@@ -1,3 +1,7 @@+## 1.2.12.1++* Fix `pass` in `ConduitM` `MonadWriter` instance+ ## 1.2.12 * Add `exceptC`, `runExceptC` and `catchExceptC` to `Data.Conduit.Lift`
Data/Conduit/Internal/Conduit.hs view
@@ -94,7 +94,7 @@ import Control.Monad.Error.Class(MonadError(..)) import Control.Monad.Reader.Class(MonadReader(..)) import Control.Monad.RWS.Class(MonadRWS())-import Control.Monad.Writer.Class(MonadWriter(..))+import Control.Monad.Writer.Class(MonadWriter(..), censor) import Control.Monad.State.Class(MonadState(..)) import Control.Monad.Trans.Class (MonadTrans (lift)) import Control.Monad.IO.Class (MonadIO (liftIO))@@ -207,12 +207,16 @@ in go mempty (c0 Done) pass (ConduitM c0) = ConduitM $ \rest ->- let go (HaveOutput p c o) = HaveOutput (go p) c o- go (NeedInput p c) = NeedInput (\i -> go (p i)) (\u -> go (c u))- go (PipeM mp) = PipeM $ mp >>= (return . go)- go (Done (x,_)) = rest x- go (Leftover p i) = Leftover (go p) i- in go (c0 Done)+ let go front (HaveOutput p c o) = HaveOutput (go front p) c o+ go front (NeedInput p c) = NeedInput (\i -> go front (p i)) (\u -> go front (c u))+ go front (PipeM mp) = PipeM $ do+ (p,w) <- censor (const mempty) (listen mp)+ return $ go (front `mappend` w) p+ go front (Done (x,f)) = PipeM $ do+ tell (f front)+ return $ rest x+ go front (Leftover p i) = Leftover (go front p) i+ in go mempty (c0 Done) instance MonadState s m => MonadState s (ConduitM i o m) where get = lift get
conduit.cabal view
@@ -1,5 +1,5 @@ Name: conduit-Version: 1.2.12+Version: 1.2.12.1 Synopsis: Streaming data processing library. description: `conduit` is a solution to the streaming data problem, allowing for production,
test/main.hs view
@@ -27,6 +27,7 @@ import Control.Monad.Trans.Writer (execWriter, tell, runWriterT) import Control.Monad.Trans.State (evalStateT, get, put, modify) import Control.Monad.Trans.Maybe (MaybeT (..))+import qualified Control.Monad.Writer as W import Control.Applicative (pure, (<$>), (<*>)) import qualified Control.Monad.Catch as Catch import Data.Functor.Identity (Identity,runIdentity)@@ -876,6 +877,12 @@ C.yield 3 lift $ return () (src C.$$ CL.consume) `shouldBe` Right [1, 2, 4 :: Int]+ describe "WriterT" $+ it "pass" $+ let writer = W.pass $ do+ W.tell [1 :: Int]+ pure ((), (2:))+ in execWriter (C.runConduit writer) `shouldBe` [2, 1] describe "finalizers" $ do it "promptness" $ do