X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Futils%2FPanic.lhs;h=d273fe86af2e20bddd1396075237cc2f1fe03e0e;hb=f8d8ea662828a295e27a2f5f52ce38d68fd3dee2;hp=81818df42e2a8b87a3484b0e643177414adddd35;hpb=1dbd9ba1fa6518393572997a547d6a9156f533c6;p=ghc-hetmet.git diff --git a/ghc/compiler/utils/Panic.lhs b/ghc/compiler/utils/Panic.lhs index 81818df..d273fe8 100644 --- a/ghc/compiler/utils/Panic.lhs +++ b/ghc/compiler/utils/Panic.lhs @@ -32,12 +32,23 @@ GHC's own exception type. ghcError :: GhcException -> a ghcError e = throwDyn e +-- error messages all take the form +-- +-- : +-- +-- If the location is on the command line, or in GHC itself, then +-- ="ghc". All of the error types below correspond to +-- a of "ghc", except for ProgramError (where the string is +-- assumed to contain a location already, so we don't print one). + data GhcException - = PhaseFailed String ExitCode - | Interrupted + = PhaseFailed String 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 | Panic String -- the `impossible' happened - | OtherError String -- just prints the error message + | InstallationError String -- an installation problem + | ProgramError String -- error in the user's code, probably deriving Eq progName = unsafePerformIO (getProgName) @@ -46,22 +57,28 @@ progName = unsafePerformIO (getProgName) short_usage = "Usage: For basic information, try the `--help' option." instance Show GhcException where - showsPrec _ e = showString progName . showString ": " . showBarf e + showsPrec _ e@(ProgramError _) = showGhcException e + showsPrec _ e = showString progName . showString ": " . showGhcException e -showBarf (UsageError str) +showGhcException (UsageError str) = showString str . showChar '\n' . showString short_usage -showBarf (OtherError str) - = showString str -showBarf (PhaseFailed phase code) +showGhcException (PhaseFailed phase code) = showString phase . showString " failed, code = " . shows code -showBarf (Interrupted) +showGhcException (CmdLineError str) + = showString str +showGhcException (ProgramError str) + = showString str +showGhcException (InstallationError str) + = showString str +showGhcException (Interrupted) = showString "interrupted" -showBarf (Panic s) +showGhcException (Panic s) = showString ("panic! (the `impossible' happened, GHC version " ++ cProjectVersion ++ "):\n\t" ++ s ++ "\n\n" ++ "Please report it as a compiler bug " - ++ "to glasgow-haskell-bugs@haskell.org.\n\n") + ++ "to glasgow-haskell-bugs@haskell.org,\n" + ++ "or http://sourceforge.net/projects/ghc/.\n\n") ghcExceptionTc = mkTyCon "GhcException" {-# NOINLINE ghcExceptionTc #-}