{-# LANGUAGE Trustworthy #-}{-# LANGUAGE NoImplicitPrelude
 , ExistentialQuantification
 , MagicHash
 , RecordWildCards
 , PatternSynonyms
 #-}{-# LANGUAGE DataKinds, PolyKinds #-}{-# 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.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.---- WARNING: You may want to use 'throwIO' instead so that your pure code-- stays exception-free.throw ::forall(r ::RuntimeRep ).forall(a ::TYPE r ).foralle .Exception e =>e ->a throw :: forall a e. Exception e => e -> a
throw e
e =SomeException -> a
forall a b. a -> b
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(ErrorCall -> ErrorCall -> Bool
(ErrorCall -> ErrorCall -> Bool)
-> (ErrorCall -> ErrorCall -> Bool) -> Eq ErrorCall
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ErrorCall -> ErrorCall -> Bool
== :: ErrorCall -> ErrorCall -> Bool
$c/= :: ErrorCall -> ErrorCall -> Bool
/= :: ErrorCall -> ErrorCall -> Bool
Eq -- ^ @since 4.7.0.0,Eq ErrorCall
Eq ErrorCall =>
(ErrorCall -> ErrorCall -> Ordering)
-> (ErrorCall -> ErrorCall -> Bool)
-> (ErrorCall -> ErrorCall -> Bool)
-> (ErrorCall -> ErrorCall -> Bool)
-> (ErrorCall -> ErrorCall -> Bool)
-> (ErrorCall -> ErrorCall -> ErrorCall)
-> (ErrorCall -> ErrorCall -> ErrorCall)
-> Ord ErrorCall
ErrorCall -> ErrorCall -> Bool
ErrorCall -> ErrorCall -> Ordering
ErrorCall -> ErrorCall -> ErrorCall
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: ErrorCall -> ErrorCall -> Ordering
compare :: ErrorCall -> ErrorCall -> Ordering
$c< :: ErrorCall -> ErrorCall -> Bool
< :: ErrorCall -> ErrorCall -> Bool
$c<= :: ErrorCall -> ErrorCall -> Bool
<= :: ErrorCall -> ErrorCall -> Bool
$c> :: ErrorCall -> ErrorCall -> Bool
> :: ErrorCall -> ErrorCall -> Bool
$c>= :: ErrorCall -> ErrorCall -> Bool
>= :: ErrorCall -> ErrorCall -> Bool
$cmax :: ErrorCall -> ErrorCall -> ErrorCall
max :: ErrorCall -> ErrorCall -> ErrorCall
$cmin :: ErrorCall -> ErrorCall -> ErrorCall
min :: ErrorCall -> ErrorCall -> ErrorCall
Ord -- ^ @since 4.7.0.0)patternErrorCall ::String ->ErrorCall pattern$mErrorCall :: forall {r}. ErrorCall -> (String -> r) -> ((# #) -> r) -> r
$bErrorCall :: String -> ErrorCall
ErrorCall err <-ErrorCallWithLocation err _whereErrorCall String
err =String -> String -> ErrorCall
ErrorCallWithLocation String
err String
""{-# COMPLETEErrorCall #-}-- | @since 4.0.0.0instanceException ErrorCall -- | @since 4.0.0.0instanceShow ErrorCall whereshowsPrec :: Int -> ErrorCall -> ShowS
showsPrec Int
_(ErrorCallWithLocation String
err String
"")=String -> ShowS
showString String
err showsPrec Int
_(ErrorCallWithLocation String
err String
loc )=String -> ShowS
showString String
err ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Char -> ShowS
showChar Char
'\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 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 String
s 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 String
"\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 a. a -> IO a
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 [String]
stk =String
"CallStack (from -prof):"String -> [String] -> [String]
forall a. a -> [a] -> [a]
: ShowS -> [String] -> [String]
forall a b. (a -> b) -> [a] -> [b]
map (String
" "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 {Int
String
srcLocPackage :: String
srcLocModule :: String
srcLocFile :: String
srcLocStartLine :: Int
srcLocStartCol :: Int
srcLocEndLine :: Int
srcLocEndCol :: Int
srcLocEndCol :: SrcLoc -> Int
srcLocEndLine :: SrcLoc -> Int
srcLocStartCol :: SrcLoc -> Int
srcLocStartLine :: SrcLoc -> Int
srcLocFile :: SrcLoc -> String
srcLocModule :: SrcLoc -> String
srcLocPackage :: SrcLoc -> String
.. }=(String -> ShowS) -> String -> [String] -> String
forall a b. (a -> b -> b) -> b -> [a] -> b
foldr String -> ShowS
forall a. [a] -> [a] -> [a]
(++) String
""[String
srcLocFile ,String
":",Int -> String
forall a. Show a => a -> String
show Int
srcLocStartLine ,String
":",Int -> String
forall a. Show a => a -> String
show Int
srcLocStartCol ,String
" in ",String
srcLocPackage ,String
":",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 String
"\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 CallStack
cs =caseCallStack -> [(String, SrcLoc)]
getCallStack CallStack
cs of[]->[][(String, SrcLoc)]
stk ->String
"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
" "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 (String
f ,SrcLoc
loc )=String
f String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
", called at "String -> ShowS
forall a. [a] -> [a] -> [a]
++ SrcLoc -> String
prettySrcLoc SrcLoc
loc 

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