+++ /dev/null
-{-# OPTIONS -fno-implicit-prelude #-}
-
-module Test17 where
-
-import PrelGHC
-import PrelBase
-
-data Exception = IOException IOError | OtherExc
-
-data IOError
- = IOError
- String
-
-tthrow :: Exception -> a
-
-tthrow exception = raise# exception
-ccatchException (IO m) k = IO (\s -> catch# m (\ex -> unIO (k ex)) s)
-
-
-ccatch :: IO a -> (IOError -> IO a) -> IO a
-ccatch m k = ccatchException m handler
- where handler (IOException err) = k err
- handler other = tthrow other
-
-ccatchNonIO :: IO a -> (Exception -> IO a) -> IO a
-ccatchNonIO m k = ccatchException m handler
- where handler (IOException err) = ioError err
- handler other = k other
-
-newtype IO a = IO (State# RealWorld -> (# State# RealWorld, a #))
-
-unIO :: IO a -> (State# RealWorld -> (# State# RealWorld, a #))
-unIO (IO a) = a
-
-ioError :: IOError -> IO a
-ioError err = IO (\s -> tthrow (IOException err) s)
-
-
-
-blockAsyncExceptions :: IO a -> IO a
-blockAsyncExceptions (IO io) = IO (blockAsyncExceptions# io)
-
-unblockAsyncExceptions :: IO a -> IO a
-unblockAsyncExceptions (IO io) = IO (unblockAsyncExceptions# io)