{-# LANGUAGE Trustworthy #-}{-# LANGUAGE NoImplicitPrelude
 , ExistentialQuantification
 , MagicHash
 , RecordWildCards
 , PatternSynonyms
 #-}{-# LANGUAGE TypeInType #-}{-# OPTIONS_HADDOCK not-home #-}------------------------------------------------------------------------------- |-- Module : GHC.Exception-- Copyright : (c) The University of Glasgow, 1998-2002-- License : see libraries/base/LICENSE---- Maintainer : cvs-ghc@haskell.org-- Stability : internal-- Portability : non-portable (GHC extensions)---- Exceptions and exception-handling functions.-------------------------------------------------------------------------------moduleGHC.Exception(moduleGHC.Exception.Type ,throw ,ErrorCall (..,ErrorCall ),errorCallException ,errorCallWithCallStackException -- re-export CallStack and SrcLoc from GHC.Types,CallStack ,fromCallSiteList ,getCallStack ,prettyCallStack ,prettyCallStackLines ,showCCSStack ,SrcLoc (..),prettySrcLoc )whereimportGHC.Base importGHC.Show importGHC.Stack.Types importGHC.OldList importGHC.PrimimportGHC.IO.Unsafe import{-# SOURCE#-}GHC.Stack.CCS importGHC.Exception.Type -- | Throw an exception. Exceptions may be thrown from purely-- functional code, but may only be caught within the 'IO' monad.throw ::forall(r ::RuntimeRep).forall(a ::TYPEr ).foralle .Exception e =>e ->a throw :: e -> a
throw e :: e
e =SomeException -> a
forall b a. b -> a
raise#(e -> SomeException
forall e. Exception e => e -> SomeException
toException e
e )-- | This is thrown when the user calls 'error'. The first @String@ is the-- argument given to 'error', second @String@ is the location.dataErrorCall =ErrorCallWithLocation String String deriving(Eq-- ^ @since 4.7.0.0,Ord-- ^ @since 4.7.0.0)patternErrorCall ::String ->ErrorCall pattern$bErrorCall :: String -> ErrorCall
$mErrorCall :: forall r. ErrorCall -> (String -> r) -> (Void# -> r) -> r
ErrorCall err <-ErrorCallWithLocation err _whereErrorCall err :: String
err =String -> String -> ErrorCall
ErrorCallWithLocation String
err ""{-# COMPLETEErrorCall #-}-- | @since 4.0.0.0instanceException ErrorCall -- | @since 4.0.0.0instanceShow ErrorCall whereshowsPrec :: Int -> ErrorCall -> ShowS
showsPrec _(ErrorCallWithLocation err :: String
err "")=String -> ShowS
showString String
err showsPrec _(ErrorCallWithLocation err :: String
err loc :: String
loc )=String -> ShowS
showString String
err ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Char -> ShowS
showChar '\n'ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showString String
loc errorCallException ::String ->SomeException errorCallException :: String -> SomeException
errorCallException s :: String
s =ErrorCall -> SomeException
forall e. Exception e => e -> SomeException
toException (String -> ErrorCall
ErrorCall String
s )errorCallWithCallStackException ::String ->CallStack ->SomeException errorCallWithCallStackException :: String -> CallStack -> SomeException
errorCallWithCallStackException s :: String
s stk :: CallStack
stk =IO SomeException -> SomeException
forall a. IO a -> a
unsafeDupablePerformIO (IO SomeException -> SomeException)
-> IO SomeException -> SomeException
forall a b. (a -> b) -> a -> b
$ do[String]
ccsStack <-IO [String]
currentCallStack letimplicitParamCallStack :: [String]
implicitParamCallStack =CallStack -> [String]
prettyCallStackLines CallStack
stk ccsCallStack :: [String]
ccsCallStack =[String] -> [String]
showCCSStack [String]
ccsStack stack :: String
stack =String -> [String] -> String
forall a. [a] -> [[a]] -> [a]
intercalate "\n"([String] -> String) -> [String] -> String
forall a b. (a -> b) -> a -> b
$ [String]
implicitParamCallStack [String] -> [String] -> [String]
forall a. [a] -> [a] -> [a]
++ [String]
ccsCallStack SomeException -> IO SomeException
forall (m :: * -> *) a. Monad m => a -> m a
return (SomeException -> IO SomeException)
-> SomeException -> IO SomeException
forall a b. (a -> b) -> a -> b
$ ErrorCall -> SomeException
forall e. Exception e => e -> SomeException
toException (String -> String -> ErrorCall
ErrorCallWithLocation String
s String
stack )showCCSStack ::[String ]->[String ]showCCSStack :: [String] -> [String]
showCCSStack []=[]showCCSStack stk :: [String]
stk ="CallStack (from -prof):"String -> [String] -> [String]
forall a. a -> [a] -> [a]
:ShowS -> [String] -> [String]
forall a b. (a -> b) -> [a] -> [b]
map (" "String -> ShowS
forall a. [a] -> [a] -> [a]
++ )([String] -> [String]
forall a. [a] -> [a]
reverse [String]
stk )-- prettySrcLoc and prettyCallStack are defined here to avoid hs-boot-- files. See Note [Definition of CallStack]-- | Pretty print a 'SrcLoc'.---- @since 4.9.0.0prettySrcLoc ::SrcLoc ->String prettySrcLoc :: SrcLoc -> String
prettySrcLoc SrcLoc {..}=(String -> ShowS) -> String -> [String] -> String
forall a b. (a -> b -> b) -> b -> [a] -> b
foldr String -> ShowS
forall a. [a] -> [a] -> [a]
(++) ""[String
srcLocFile ,":",Int -> String
forall a. Show a => a -> String
show Int
srcLocStartLine ,":",Int -> String
forall a. Show a => a -> String
show Int
srcLocStartCol ," in ",String
srcLocPackage ,":",String
srcLocModule ]-- | Pretty print a 'CallStack'.---- @since 4.9.0.0prettyCallStack ::CallStack ->String prettyCallStack :: CallStack -> String
prettyCallStack =String -> [String] -> String
forall a. [a] -> [[a]] -> [a]
intercalate "\n"([String] -> String)
-> (CallStack -> [String]) -> CallStack -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CallStack -> [String]
prettyCallStackLines prettyCallStackLines ::CallStack ->[String ]prettyCallStackLines :: CallStack -> [String]
prettyCallStackLines cs :: CallStack
cs =caseCallStack -> [(String, SrcLoc)]
getCallStack CallStack
cs of[]->[]stk :: [(String, SrcLoc)]
stk ->"CallStack (from HasCallStack):"String -> [String] -> [String]
forall a. a -> [a] -> [a]
:((String, SrcLoc) -> String) -> [(String, SrcLoc)] -> [String]
forall a b. (a -> b) -> [a] -> [b]
map ((" "String -> ShowS
forall a. [a] -> [a] -> [a]
++ )ShowS -> ((String, SrcLoc) -> String) -> (String, SrcLoc) -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (String, SrcLoc) -> String
prettyCallSite )[(String, SrcLoc)]
stk whereprettyCallSite :: (String, SrcLoc) -> String
prettyCallSite (f :: String
f ,loc :: SrcLoc
loc )=String
f String -> ShowS
forall a. [a] -> [a] -> [a]
++ ", called at "String -> ShowS
forall a. [a] -> [a] -> [a]
++ SrcLoc -> String
prettySrcLoc SrcLoc
loc 

AltStyle によって変換されたページ (->オリジナル) /