module FileLocation
( err, undef, fromJst, fromRht
, debug, debugM, debugMsg, dbg, dbgMsg, trc, ltrace, ltraceM, strace
, locationToString
, thrwIO, thrwsIO
)
where
import FileLocation.LocationString (locationToString)
import Debug.FileLocation (debug, debugM, debugMsg, dbg, dbgMsg, trc, ltrace, ltraceM, strace)
import Control.Exception.FileLocation (thrwIO, thrwsIO)
import Debug.Trace (trace)
import Language.Haskell.TH.Syntax
err :: String -> Q Exp
err str = do
loc <- qLocation
let prefix = (locationToString loc) ++ " "
[|error (prefix ++ str)|]
undef :: Q Exp
undef = do
loc <- qLocation
let prefix = (locationToString loc) ++ " "
[|trace (prefix ++ "undefined") undefined|]
fromJst :: Q Exp
fromJst = do
loc <- qLocation
let msg = (locationToString loc) ++ " fromJst: Nothing"
[|\m -> case m of
Just v -> v
Nothing -> error msg|]
fromRht :: Q Exp
fromRht = do
loc <- qLocation
let msg = (locationToString loc) ++ " fromRht: Left: "
[|\m -> case m of
Right v -> v
Left e -> error (msg ++ show e)|]