[project @ 2000-12-12 12:10:08 by simonmar]
authorsimonmar <unknown>
Tue, 12 Dec 2000 12:10:08 +0000 (12:10 +0000)
committersimonmar <unknown>
Tue, 12 Dec 2000 12:10:08 +0000 (12:10 +0000)
Treat an unhandled exception in the same way as a panic (i.e. the
`impossible' happened), to make it clear that these really are
compiler bugs.

ghc/compiler/main/DriverUtil.hs
ghc/compiler/main/Main.hs

index 31808aa..e02b75d 100644 (file)
@@ -1,5 +1,5 @@
 -----------------------------------------------------------------------------
--- $Id: DriverUtil.hs,v 1.13 2000/12/11 14:42:21 sewardj Exp $
+-- $Id: DriverUtil.hs,v 1.14 2000/12/12 12:10:08 simonmar Exp $
 --
 -- Utils for the driver
 --
@@ -118,6 +118,9 @@ later = flip finally
 handleDyn :: Typeable ex => (ex -> IO a) -> IO a -> IO a
 handleDyn = flip catchDyn
 
+handle :: (Exception -> IO a) -> IO a -> IO a
+handle = flip Exception.catchAllIO
+
 split :: Char -> String -> [String]
 split c s = case rest of
                []     -> [chunk] 
index 5786dec..40fed22 100644 (file)
@@ -1,6 +1,6 @@
 {-# OPTIONS -fno-warn-incomplete-patterns #-}
 -----------------------------------------------------------------------------
--- $Id: Main.hs,v 1.36 2000/12/11 16:42:26 sewardj Exp $
+-- $Id: Main.hs,v 1.37 2000/12/12 12:10:08 simonmar Exp $
 --
 -- GHC Driver program
 --
@@ -91,6 +91,9 @@ import Maybe
 -- Main loop
 
 main =
+  -- top-level exception handler: any unrecognised exception is a compiler bug.
+  handle (\exception -> panic (show exception)) $ do
+
   -- all error messages are propagated as exceptions
   handleDyn (\dyn -> case dyn of
                          PhaseFailed _phase code -> exitWith code