{-# LANGUAGE CPP #-} {-# LANGUAGE MagicHash #-} {-# LANGUAGE PolyKinds #-} {-# LANGUAGE ImplicitParams #-} {-# LANGUAGE ExistentialQuantification #-} #if MIN_VERSION_base(4,9,0) {-# OPTIONS_GHC -fno-warn-redundant-constraints #-} #endif module Error ( error ) where import GHC.Prim import Data.Text (Text, unpack) #if MIN_VERSION_base(4,9,0) -- Full stack trace. import GHC.Types (RuntimeRep) import CallStack (HasCallStack) import GHC.Exception (errorCallWithCallStackException) error :: forall (r :: RuntimeRep) . forall (a :: TYPE r) . HasCallStack => Text -> a error s = raise# (errorCallWithCallStackException (unpack s) ?callstack) #elif MIN_VERSION_base(4,7,0) -- Basic Call Stack with callsite. import GHC.Exception (errorCallException) error :: Text -> a error s = raise# (errorCallException (unpack s)) #else -- No exception tracing. import GHC.Types import GHC.Exception error :: Text -> a error s = throw (ErrorCall (unpack s)) #endif