fix non-GHC-specific variant of FastTypes
[ghc-hetmet.git] / compiler / utils / Panic.lhs
index 1a74d5d..300e7fc 100644 (file)
@@ -1,7 +1,7 @@
 %
 %
+% (c) The University of Glasgow 2006
 % (c) The GRASP Project, Glasgow University, 1992-2000
 %
 % (c) The GRASP Project, Glasgow University, 1992-2000
 %
-\section{Panic error messages}
 
 Defines basic funtions for printing error messages.
 
 
 Defines basic funtions for printing error messages.
 
@@ -39,24 +39,15 @@ import Posix                ( Handler(Catch), installHandler, sigINT, sigQUIT )
 import GHC.ConsoleHandler
 #endif
 
 import GHC.ConsoleHandler
 #endif
 
-# if __GLASGOW_HASKELL__ < 500
-import EXCEPTION        ( raiseInThread )
-# else
-import EXCEPTION       ( throwTo )
-# endif /* GHC < 500 */
-
-#if __GLASGOW_HASKELL__ > 408
-import EXCEPTION       ( catchJust, tryJust, ioErrors )
-#endif
-
-import CONCURRENT      ( myThreadId, MVar, ThreadId, withMVar, newEmptyMVar )
-import DYNAMIC
-import qualified EXCEPTION as Exception
-import TRACE           ( trace )
-import UNSAFE_IO       ( unsafePerformIO )
-import IO              ( isUserError )
-
-import System
+import Control.Exception
+import Control.Concurrent ( MVar, ThreadId, withMVar, newMVar )
+import Data.Dynamic
+import qualified Control.Exception as Exception
+import Debug.Trace     ( trace )
+import System.IO.Unsafe        ( unsafePerformIO )
+import System.IO.Error ( isUserError )
+import System.Exit
+import System.Environment
 \end{code}
 
 GHC's own exception type.
 \end{code}
 
 GHC's own exception type.
@@ -180,33 +171,14 @@ tryMost action = do r <- try action; filter r
 tryUser :: IO a -> IO (Either Exception.Exception a)
 tryUser action = tryJust tc_errors action
   where 
 tryUser :: IO a -> IO (Either Exception.Exception a)
 tryUser action = tryJust tc_errors action
   where 
-#if __GLASGOW_HASKELL__ > 504 || __GLASGOW_HASKELL__ < 500
+#if __GLASGOW_HASKELL__ > 504
        tc_errors e@(Exception.IOException ioe) | isUserError ioe = Just e
        tc_errors e@(Exception.IOException ioe) | isUserError ioe = Just e
-#elif __GLASGOW_HASKELL__ == 502
-       tc_errors e@(UserError _) = Just e
 #else 
        tc_errors e@(Exception.IOException ioe) | isUserError e = Just e
 #endif
        tc_errors _other = Nothing
 \end{code}     
 
 #else 
        tc_errors e@(Exception.IOException ioe) | isUserError e = Just e
 #endif
        tc_errors _other = Nothing
 \end{code}     
 
-Compatibility stuff:
-
-\begin{code}
-#if __GLASGOW_HASKELL__ <= 408
-try = Exception.tryAllIO
-#else
-try = Exception.try
-#endif
-
-#if __GLASGOW_HASKELL__ <= 408
-catchJust = Exception.catchIO
-tryJust   = Exception.tryIO
-ioErrors  = Exception.justIoErrors
-throwTo   = Exception.raiseInThread
-#endif
-\end{code}
-
 Standard signal handlers for catching ^C, which just throw an
 exception in the target thread.  The current target thread is
 the thread at the head of the list in the MVar passed to
 Standard signal handlers for catching ^C, which just throw an
 exception in the target thread.  The current target thread is
 the thread at the head of the list in the MVar passed to
@@ -246,5 +218,5 @@ installSignalHandlers = do
 
 {-# NOINLINE interruptTargetThread #-}
 interruptTargetThread :: MVar [ThreadId]
 
 {-# NOINLINE interruptTargetThread #-}
 interruptTargetThread :: MVar [ThreadId]
-interruptTargetThread = unsafePerformIO newEmptyMVar
+interruptTargetThread = unsafePerformIO (newMVar [])
 \end{code}
 \end{code}