diff options
-rw-r--r-- | Annex/Exception.hs | 17 | ||||
-rw-r--r-- | Command/Add.hs | 2 | ||||
-rw-r--r-- | Utility/Exception.hs | 4 | ||||
-rw-r--r-- | Utility/Mounts.hsc | 2 |
4 files changed, 13 insertions, 12 deletions
diff --git a/Annex/Exception.hs b/Annex/Exception.hs index 96070ee26..99466a851 100644 --- a/Annex/Exception.hs +++ b/Annex/Exception.hs @@ -13,24 +13,27 @@ module Annex.Exception ( bracketIO, tryAnnex, - throw, + throwAnnex, catchAnnex, ) where -import Prelude hiding (catch) -import "MonadCatchIO-transformers" Control.Monad.CatchIO (bracket, try, throw, catch) -import Control.Exception hiding (handle, try, throw, bracket, catch) +import qualified "MonadCatchIO-transformers" Control.Monad.CatchIO as M +import Control.Exception import Common.Annex {- Runs an Annex action, with setup and cleanup both in the IO monad. -} bracketIO :: IO v -> (v -> IO b) -> (v -> Annex a) -> Annex a -bracketIO setup cleanup go = bracket (liftIO setup) (liftIO . cleanup) go +bracketIO setup cleanup go = M.bracket (liftIO setup) (liftIO . cleanup) go {- try in the Annex monad -} tryAnnex :: Annex a -> Annex (Either SomeException a) -tryAnnex = try +tryAnnex = M.try + +{- throw in the Annex monad -} +throwAnnex :: Exception e => e -> Annex a +throwAnnex = M.throw {- catch in the Annex monad -} catchAnnex :: Exception e => Annex a -> (e -> Annex a) -> Annex a -catchAnnex = catch +catchAnnex = M.catch diff --git a/Command/Add.hs b/Command/Add.hs index 543d37136..fe1a6b13a 100644 --- a/Command/Add.hs +++ b/Command/Add.hs @@ -174,7 +174,7 @@ undo file key e = do liftIO $ nukeFile file catchAnnex (fromAnnex key file) tryharder logStatus key InfoMissing - throw e + throwAnnex e where -- fromAnnex could fail if the file ownership is weird tryharder :: IOException -> Annex () diff --git a/Utility/Exception.hs b/Utility/Exception.hs index bc928e18e..3835d741d 100644 --- a/Utility/Exception.hs +++ b/Utility/Exception.hs @@ -9,8 +9,8 @@ module Utility.Exception where -import Prelude hiding (catch) import Control.Exception +import qualified Control.Exception as E import Control.Applicative import Control.Monad import System.IO.Error (isDoesNotExistError) @@ -33,7 +33,7 @@ catchMsgIO a = either (Left . show) Right <$> tryIO a {- catch specialized for IO errors only -} catchIO :: IO a -> (IOException -> IO a) -> IO a -catchIO = catch +catchIO = E.catch {- try specialized for IO errors only -} tryIO :: IO a -> IO (Either IOException a) diff --git a/Utility/Mounts.hsc b/Utility/Mounts.hsc index c13b0ece1..b6defda43 100644 --- a/Utility/Mounts.hsc +++ b/Utility/Mounts.hsc @@ -20,8 +20,6 @@ module Utility.Mounts ( import Control.Monad import Foreign import Foreign.C -import GHC.IO hiding (finally, bracket) -import Prelude hiding (catch) #include "libmounts.h" #else import Utility.Exception |