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.
-----------------------------------------------------------------------------
--- $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
--
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]
{-# 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
--
-- 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