Merge pull request #1705 from masaeedu/addmonadstate

Add MonadState instance for SIO
This commit is contained in:
Michael Snoyman 2020-12-16 05:32:31 +02:00 committed by GitHub
commit 9cb8d2d369
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 0 deletions

View File

@ -7,6 +7,7 @@
{-# LANGUAGE ImplicitParams #-} {-# LANGUAGE ImplicitParams #-}
{-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-| {-|
Yesod.Test is a pragmatic framework for testing web applications built Yesod.Test is a pragmatic framework for testing web applications built
@ -245,6 +246,7 @@ import Network.Wai.Test hiding (assertHeader, assertNoHeader, request)
import Control.Monad.Trans.Reader (ReaderT (..)) import Control.Monad.Trans.Reader (ReaderT (..))
import Conduit (MonadThrow) import Conduit (MonadThrow)
import Control.Monad.IO.Class import Control.Monad.IO.Class
import qualified Control.Monad.State.Class as MS
import System.IO import System.IO
import Yesod.Core.Unsafe (runFakeHandler) import Yesod.Core.Unsafe (runFakeHandler)
import Yesod.Test.TransversingCSS import Yesod.Test.TransversingCSS
@ -1601,6 +1603,11 @@ instance YesodDispatch site => Hspec.Example (SIO (YesodExampleData site) a) whe
newtype SIO s a = SIO (ReaderT (IORef s) IO a) newtype SIO s a = SIO (ReaderT (IORef s) IO a)
deriving (Functor, Applicative, Monad, MonadIO, MonadThrow, MonadUnliftIO) deriving (Functor, Applicative, Monad, MonadIO, MonadThrow, MonadUnliftIO)
instance MS.MonadState s (SIO s)
where
get = getSIO
put = putSIO
getSIO :: SIO s s getSIO :: SIO s s
getSIO = SIO $ ReaderT readIORef getSIO = SIO $ ReaderT readIORef

View File

@ -34,6 +34,7 @@ library
, pretty-show >= 1.6 , pretty-show >= 1.6
, text , text
, time , time
, mtl >= 2.0.0
, transformers >= 0.2.2 , transformers >= 0.2.2
, wai >= 3.0 , wai >= 3.0
, wai-extra , wai-extra