X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2Futils%2FIOEnv.hs;h=8116effb331ea2b2c1590ef176d634ccbc34d1aa;hp=e1dfdb400b5e03e006de839831c98129c2136537;hb=b00b5bc04ff36a551552470060064f0b7d84ca30;hpb=7e623a3a6c4fa75bae5be29a9fca015f98f1c30b diff --git a/compiler/utils/IOEnv.hs b/compiler/utils/IOEnv.hs index e1dfdb4..8116eff 100644 --- a/compiler/utils/IOEnv.hs +++ b/compiler/utils/IOEnv.hs @@ -17,7 +17,7 @@ module IOEnv ( getEnv, setEnv, updEnv, runIOEnv, unsafeInterleaveM, - tryM, tryAllM, fixM, + tryM, tryAllM, tryMostM, fixM, -- I/O operations ioToIOEnv, @@ -25,7 +25,7 @@ module IOEnv ( ) where #include "HsVersions.h" -import Panic ( try, tryUser, Exception(..) ) +import Panic ( try, tryUser, tryMost, Exception(..) ) import DATA_IOREF ( IORef, newIORef, readIORef, writeIORef ) import UNSAFE_IO ( unsafeInterleaveIO ) import FIX_IO ( fixIO ) @@ -100,6 +100,9 @@ tryAllM :: IOEnv env r -> IOEnv env (Either Exception r) -- even a pattern-match failure is a programmer error tryAllM (IOEnv thing) = IOEnv (\ env -> try (thing env)) +tryMostM :: IOEnv env r -> IOEnv env (Either Exception r) +tryMostM (IOEnv thing) = IOEnv (\ env -> tryMost (thing env)) + --------------------------- unsafeInterleaveM :: IOEnv env a -> IOEnv env a unsafeInterleaveM (IOEnv m) = IOEnv (\ env -> unsafeInterleaveIO (m env))