From a1e708107bb646d132a5410cee2419456d1d0f6b Mon Sep 17 00:00:00 2001 From: Asad Saeeduddin Date: Thu, 12 Nov 2020 12:18:17 -0500 Subject: [PATCH] Add MonadState instance for SIO --- yesod-test/Yesod/Test.hs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/yesod-test/Yesod/Test.hs b/yesod-test/Yesod/Test.hs index c82e6cc0..a06f3957 100644 --- a/yesod-test/Yesod/Test.hs +++ b/yesod-test/Yesod/Test.hs @@ -245,6 +245,7 @@ import Network.Wai.Test hiding (assertHeader, assertNoHeader, request) import Control.Monad.Trans.Reader (ReaderT (..)) import Conduit (MonadThrow) import Control.Monad.IO.Class +import Control.Monad.State.Class import System.IO import Yesod.Core.Unsafe (runFakeHandler) 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) deriving (Functor, Applicative, Monad, MonadIO, MonadThrow, MonadUnliftIO) +instance MonadState s (SIO s) + where + get = getSIO + put = putSIO + getSIO :: SIO s s getSIO = SIO $ ReaderT readIORef