From 896b0afee6a8470a39a197365e4e074de3ae4073 Mon Sep 17 00:00:00 2001 From: simonmar Date: Wed, 28 Mar 2001 16:45:35 +0000 Subject: [PATCH] [project @ 2001-03-28 16:45:35 by simonmar] Clean up GHC's error reporting - the GhcException type has some more constructors: CmdLineError, ProgramError, and InstallationError. OtherError has gone. - most error messages should begin with ":". When the error is on the command-line or in GHC itself, is "ghc", for consistency with std Unix semantics. --- ghc/compiler/utils/Panic.lhs | 39 ++++++++++++++++++++++++++++----------- 1 file changed, 28 insertions(+), 11 deletions(-) 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 #-} -- 1.7.10.4