craft-0.0.0.1: src/Craft/Error.hs
module Craft.Error where
import Control.Monad.Catch
import Control.Monad.Logger (logError)
import Data.Monoid ((<>))
import qualified Data.Text as T
import Language.Haskell.TH.Syntax (Exp, Q)
data CraftError = CraftError String
deriving Show
data CraftNotImplemented = CraftNotImplemented
deriving Show
instance Exception CraftError
instance Exception CraftNotImplemented
-- |Log an error and throw a runtime exception
craftError :: Q Exp
craftError = [|\s -> $(logError) (T.pack s) >> throwM (CraftError s) |]
notImplemented :: Q Exp
notImplemented = [| \s -> do
$(logError) $ "Not Implemented: " <> T.pack s
throwM CraftNotImplemented
|]