gigaparsec-0.2.2.0: src/Text/Gigaparsec/Internal/Require.hs
{-# LANGUAGE Safe #-}
{-# OPTIONS_HADDOCK hide #-}
{-# OPTIONS_GHC -Wno-all-missed-specialisations #-}
module Text.Gigaparsec.Internal.Require (require, RequirementUnsatisfied) where
import Control.Exception (Exception, throw)
type RequirementUnsatisfied :: *
data RequirementUnsatisfied = RequirementUnsatisfied { func :: !String
, msg :: !String
}
instance Show RequirementUnsatisfied where
show :: RequirementUnsatisfied -> String
show RequirementUnsatisfied{..} = "requirement unsatisfied, " ++ msg ++ " (" ++ func ++ ")"
instance Exception RequirementUnsatisfied
require :: Bool -> String -> String -> a -> a
require True _ _ = id
require False func msg = throw (RequirementUnsatisfied func msg)