Merge pull request #1546 from hasufell/PR/hasufell/issue-1545/monad-fail

Add `MonadFail` instance for `Handler` wrt #1545
This commit is contained in:
Gaël Deest 2022-02-28 09:47:33 +01:00 committed by GitHub
commit 8fccfccae0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 2 deletions

View File

@ -3,6 +3,11 @@
Package versions follow the [Package Versioning Policy](https://pvp.haskell.org/): in A.B.C, bumps to either A or B represent major versions.
Unreleased
----------
- Add `MonadFail` instance for `Handler` wrt [#1545](https://github.com/haskell-servant/servant/issues/1545)
0.19
----

View File

@ -13,17 +13,19 @@ import Control.Monad.Base
import Control.Monad.Catch
(MonadCatch, MonadMask, MonadThrow)
import Control.Monad.Error.Class
(MonadError)
(MonadError, throwError)
import Control.Monad.IO.Class
(MonadIO)
import Control.Monad.Trans.Control
(MonadBaseControl (..))
import Control.Monad.Trans.Except
(ExceptT, runExceptT)
import Data.String
(fromString)
import GHC.Generics
(Generic)
import Servant.Server.Internal.ServerError
(ServerError)
(ServerError, errBody, err500)
newtype Handler a = Handler { runHandler' :: ExceptT ServerError IO a }
deriving
@ -32,6 +34,9 @@ newtype Handler a = Handler { runHandler' :: ExceptT ServerError IO a }
, MonadThrow, MonadCatch, MonadMask
)
instance MonadFail Handler where
fail str = throwError err500 { errBody = fromString str }
instance MonadBase IO Handler where
liftBase = Handler . liftBase