{-# OPTIONS -#include "Linker.h" -#include "SchedAPI.h" #-}
-----------------------------------------------------------------------------
--- $Id: InteractiveUI.hs,v 1.101 2001/10/31 12:51:08 simonmar Exp $
+-- $Id: InteractiveUI.hs,v 1.102 2001/12/05 00:06:32 sof Exp $
--
-- GHC Interactive User Interface
--
showException (DynException dyn) =
case fromDynamic dyn of
- Nothing ->
- io (putStrLn ("*** Exception: (unknown)"))
- Just (PhaseFailed phase code) ->
- io (putStrLn ("Phase " ++ phase ++ " failed (code "
- ++ show code ++ ")"))
- Just Interrupted ->
- io (putStrLn "Interrupted.")
- Just (CmdLineError s) ->
- io (putStrLn s) -- omit the location for CmdLineError
- Just other_ghc_ex ->
- io (putStrLn (show other_ghc_ex))
+ Nothing -> io (putStrLn ("*** Exception: (unknown)"))
+ Just Interrupted -> io (putStrLn "Interrupted.")
+ Just (CmdLineError s) -> io (putStrLn s) -- omit the location for CmdLineError
+ Just ph@PhaseFailed{} -> io (putStrLn (showGhcException ph)) -- ditto
+ Just other_ghc_ex -> io (print other_ghc_ex)
+
showException other_exception
= io (putStrLn ("*** Exception: " ++ show other_exception))
-- assumed to contain a location already, so we don't print one).
data GhcException
- = PhaseFailed String ExitCode -- an external phase (eg. cpp) failed
+ = PhaseFailed String -- name of phase
+ ExitCode -- an external phase (eg. cpp) failed
| Interrupted -- someone pressed ^C
| UsageError String -- prints the short usage msg after the error
| CmdLineError String -- cmdline prob, but doesn't print usage
showGhcException (UsageError str)
= showString str . showChar '\n' . showString short_usage
showGhcException (PhaseFailed phase code)
- = showString phase . showString " failed, code = " . shows code
+ = showString "phase `" . showString phase .
+ showString "' failed (exitcode = " . shows int_code .
+ showString ")"
+ where
+ int_code =
+ case code of
+ ExitSuccess -> (0::Int)
+ ExitFailure x -> x
showGhcException (CmdLineError str)
= showString str
showGhcException (ProgramError str)