Add MonadState instance for SIO

This commit is contained in:
Asad Saeeduddin 2020-11-12 12:18:17 -05:00
parent 3015133b0e
commit a1e708107b
No known key found for this signature in database
GPG Key ID: 91597F004D956406

View File

@ -245,6 +245,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 Control.Monad.State.Class
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 +1602,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 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