Commit 00fc612d authored by Ian Lynagh's avatar Ian Lynagh
Browse files

Fix exception message with ghc -e

When running with ghc -e, exceptions should claim to be from the program
that we are running, not ghc.
parent 296e47fa
......@@ -82,9 +82,10 @@ import Data.Array
import Control.Monad as Monad
import Text.Printf
import Foreign
import Foreign.C ( withCStringLen )
import Foreign.C
import GHC.Exts ( unsafeCoerce# )
import GHC.IOBase ( IOErrorType(InvalidArgument) )
import GHC.TopHandler
import Data.IORef ( IORef, readIORef, writeIORef )
......@@ -419,14 +420,22 @@ runGHCi paths maybe_exprs = do
Just exprs -> do
-- just evaluate the expression we were given
enqueueCommands exprs
let handleEval (ExitException code) = io (exitWith code)
handleEval e = handler e
runCommands' handleEval (return Nothing)
let handle e = do st <- getGHCiState
-- Jump through some hoops to get the
-- current progname in the exception text:
-- <progname>: <exception>
io $ withProgName (progname st)
-- The "fast exit" part just calls exit()
-- directly instead of doing an orderly
-- runtime shutdown, otherwise the main
-- GHCi thread will complain about being
-- interrupted.
$ topHandlerFastExit e
runCommands' handle (return Nothing)
-- and finally, exit
io $ do when (verbosity dflags > 0) $ putStrLn "Leaving GHCi."
interactiveLoop :: Bool -> Bool -> GHCi ()
interactiveLoop is_tty show_prompt =
-- Ignore ^C exceptions caught here
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment