From 33c0d90ee41e25a4713b865b09a285c5fec8df5b Mon Sep 17 00:00:00 2001
From: Mikhail Glushenkov <mikhail.glushenkov@gmail.com>
Date: Fri, 23 Aug 2013 06:13:17 +0200
Subject: [PATCH] Merge 'D.Compat.Exception' and 'D.Client.Compat.Exception'.

---
 Cabal/Cabal.cabal                             |  2 +-
 Cabal/Distribution/Compat/Exception.hs        | 27 ++++++++++++--
 .../Distribution/Client/Compat/Environment.hs |  2 +-
 .../Distribution/Client/Compat/Exception.hs   | 35 -------------------
 .../Distribution/Client/Compat/Semaphore.hs   |  2 +-
 cabal-install/Distribution/Client/Config.hs   |  6 ++--
 .../Distribution/Client/IndexUtils.hs         |  2 +-
 cabal-install/Distribution/Client/Install.hs  |  2 +-
 .../Distribution/Client/InstallSymlink.hs     |  2 +-
 .../Distribution/Client/JobControl.hs         |  2 +-
 .../Client/Sandbox/PackageEnvironment.hs      |  3 +-
 .../Distribution/Client/Sandbox/Timestamp.hs  |  2 +-
 .../Distribution/Client/SetupWrapper.hs       |  2 +-
 cabal-install/Distribution/Client/Utils.hs    |  2 +-
 cabal-install/Distribution/Client/World.hs    |  2 +-
 cabal-install/cabal-install.cabal             |  1 -
 16 files changed, 39 insertions(+), 55 deletions(-)
 delete mode 100644 cabal-install/Distribution/Client/Compat/Exception.hs

diff --git a/Cabal/Cabal.cabal b/Cabal/Cabal.cabal
index 8c820f4ec6..88598a59f0 100644
--- a/Cabal/Cabal.cabal
+++ b/Cabal/Cabal.cabal
@@ -141,6 +141,7 @@ library
 
   exposed-modules:
     Distribution.Compat.Environment
+    Distribution.Compat.Exception
     Distribution.Compat.ReadP
     Distribution.Compiler
     Distribution.InstalledPackageInfo
@@ -208,7 +209,6 @@ library
 
   other-modules:
     Distribution.Compat.CopyFile
-    Distribution.Compat.Exception
     Distribution.Compat.TempFile
     Distribution.GetOpt
     Distribution.Simple.GHC.IPI641
diff --git a/Cabal/Distribution/Compat/Exception.hs b/Cabal/Distribution/Compat/Exception.hs
index 2949b1635f..a1e3eeb18e 100644
--- a/Cabal/Distribution/Compat/Exception.hs
+++ b/Cabal/Distribution/Compat/Exception.hs
@@ -1,12 +1,33 @@
+{-# LANGUAGE CPP #-}
 module Distribution.Compat.Exception (
-     catchIO,
-     catchExit,
-     tryIO,
+  mask,
+  mask_,
+  catchIO,
+  catchExit,
+  tryIO,
   ) where
 
 import System.Exit
 import qualified Control.Exception as Exception
 
+#if MIN_VERSION_base(4,3,0)
+-- it's much less of a headache if we re-export the "real" mask and mask_
+-- so there's never more than one definition to conflict
+import Control.Exception (mask, mask_)
+#else
+import Control.Exception (block, unblock)
+#endif
+
+#if !MIN_VERSION_base(4,3,0)
+-- note: less polymorphic than 'real' mask, to avoid RankNTypes
+-- we don't need the full generality where we use it
+mask :: ((IO a -> IO a) -> IO b) -> IO b
+mask handler = block (handler unblock)
+
+mask_ :: IO a -> IO a
+mask_ = block
+#endif
+
 tryIO :: IO a -> IO (Either Exception.IOException a)
 tryIO = Exception.try
 
diff --git a/cabal-install/Distribution/Client/Compat/Environment.hs b/cabal-install/Distribution/Client/Compat/Environment.hs
index 1070b767bc..20a3f29c43 100644
--- a/cabal-install/Distribution/Client/Compat/Environment.hs
+++ b/cabal-install/Distribution/Client/Compat/Environment.hs
@@ -33,7 +33,7 @@ import Foreign.C.Error (throwErrnoIfMinus1_)
 import System.Environment (lookupEnv)
 #else
 import System.Environment (getEnv)
-import Distribution.Client.Compat.Exception (catchIO)
+import Distribution.Compat.Exception (catchIO)
 #endif
 
 import System.Posix.Internals ( withFilePath )
diff --git a/cabal-install/Distribution/Client/Compat/Exception.hs b/cabal-install/Distribution/Client/Compat/Exception.hs
deleted file mode 100644
index b4896df6a9..0000000000
--- a/cabal-install/Distribution/Client/Compat/Exception.hs
+++ /dev/null
@@ -1,35 +0,0 @@
-{-# LANGUAGE CPP #-}
-{-# OPTIONS_HADDOCK hide #-}
-module Distribution.Client.Compat.Exception (
-  mask,
-  mask_,
-  catchIO,
-  catchExit,
-  ) where
-
-import System.Exit
-import qualified Control.Exception as Exception
-
-#if MIN_VERSION_base(4,3,0)
--- it's much less of a headache if we re-export the "real" mask and mask_
--- so there's never more than one definition to conflict
-import Control.Exception (mask, mask_)
-#else
-import Control.Exception (block, unblock)
-#endif
-
-#if !MIN_VERSION_base(4,3,0)
--- note: less polymorphic than 'real' mask, to avoid RankNTypes
--- we don't need the full generality where we use it
-mask :: ((IO a -> IO a) -> IO b) -> IO b
-mask handler = block (handler unblock)
-
-mask_ :: IO a -> IO a
-mask_ = block
-#endif
-
-catchIO :: IO a -> (Exception.IOException -> IO a) -> IO a
-catchIO = Exception.catch
-
-catchExit :: IO a -> (ExitCode -> IO a) -> IO a
-catchExit = Exception.catch
diff --git a/cabal-install/Distribution/Client/Compat/Semaphore.hs b/cabal-install/Distribution/Client/Compat/Semaphore.hs
index 71e4c818c7..274cc2e244 100644
--- a/cabal-install/Distribution/Client/Compat/Semaphore.hs
+++ b/cabal-install/Distribution/Client/Compat/Semaphore.hs
@@ -13,7 +13,7 @@ import Control.Exception (onException)
 import Control.Monad (join, when)
 import Data.Typeable (Typeable)
 
-import Distribution.Client.Compat.Exception (mask_)
+import Distribution.Compat.Exception (mask_)
 
 -- | 'QSem' is a quantity semaphore in which the resource is aqcuired
 -- and released in units of one. It provides guaranteed FIFO ordering
diff --git a/cabal-install/Distribution/Client/Config.hs b/cabal-install/Distribution/Client/Config.hs
index 12ee5f0395..2e5267ed8a 100644
--- a/cabal-install/Distribution/Client/Config.hs
+++ b/cabal-install/Distribution/Client/Config.hs
@@ -100,11 +100,11 @@ import Network.URI
          ( URI(..), URIAuth(..) )
 import System.FilePath
          ( (<.>), (</>), takeDirectory )
-import Distribution.Compat.Environment
-         ( getEnvironment )
 import System.IO.Error
          ( isDoesNotExistError )
-import Distribution.Client.Compat.Exception
+import Distribution.Compat.Environment
+         ( getEnvironment )
+import Distribution.Compat.Exception
          ( catchIO )
 
 --
diff --git a/cabal-install/Distribution/Client/IndexUtils.hs b/cabal-install/Distribution/Client/IndexUtils.hs
index 50950fe0fb..158cad3b02 100644
--- a/cabal-install/Distribution/Client/IndexUtils.hs
+++ b/cabal-install/Distribution/Client/IndexUtils.hs
@@ -70,7 +70,7 @@ import qualified Data.ByteString.Char8 as BSS
 import Data.ByteString.Lazy (ByteString)
 import Distribution.Client.GZipUtils (maybeDecompress)
 import Distribution.Client.Utils (byteStringToFilePath)
-import Distribution.Client.Compat.Exception (catchIO)
+import Distribution.Compat.Exception (catchIO)
 import Distribution.Client.Compat.Time
 import System.FilePath ((</>), takeExtension, splitDirectories, normalise)
 import System.FilePath.Posix as FilePath.Posix
diff --git a/cabal-install/Distribution/Client/Install.hs b/cabal-install/Distribution/Client/Install.hs
index 2b84250a4f..24068f9224 100644
--- a/cabal-install/Distribution/Client/Install.hs
+++ b/cabal-install/Distribution/Client/Install.hs
@@ -37,7 +37,7 @@ import Control.Exception as Exception
          , IOException, SomeException )
 import System.Exit
          ( ExitCode )
-import Distribution.Client.Compat.Exception
+import Distribution.Compat.Exception
          ( catchIO, catchExit )
 import Control.Monad
          ( when, unless )
diff --git a/cabal-install/Distribution/Client/InstallSymlink.hs b/cabal-install/Distribution/Client/InstallSymlink.hs
index c8eac4ed01..b51a5fb14d 100644
--- a/cabal-install/Distribution/Client/InstallSymlink.hs
+++ b/cabal-install/Distribution/Client/InstallSymlink.hs
@@ -65,7 +65,7 @@ import System.FilePath
 import Prelude hiding (ioError)
 import System.IO.Error
          ( isDoesNotExistError, ioError )
-import Distribution.Client.Compat.Exception ( catchIO )
+import Distribution.Compat.Exception ( catchIO )
 import Control.Exception
          ( assert )
 import Data.Maybe
diff --git a/cabal-install/Distribution/Client/JobControl.hs b/cabal-install/Distribution/Client/JobControl.hs
index 4f8229c00a..326f8e04df 100644
--- a/cabal-install/Distribution/Client/JobControl.hs
+++ b/cabal-install/Distribution/Client/JobControl.hs
@@ -29,7 +29,7 @@ module Distribution.Client.JobControl (
 import Control.Monad
 import Control.Concurrent hiding (QSem, newQSem, waitQSem, signalQSem)
 import Control.Exception (SomeException, bracket_, throw, try)
-import Distribution.Client.Compat.Exception (mask)
+import Distribution.Compat.Exception (mask)
 import Distribution.Client.Compat.Semaphore
 
 data JobControl m a = JobControl {
diff --git a/cabal-install/Distribution/Client/Sandbox/PackageEnvironment.hs b/cabal-install/Distribution/Client/Sandbox/PackageEnvironment.hs
index d4d41cbcd9..db0a6145da 100644
--- a/cabal-install/Distribution/Client/Sandbox/PackageEnvironment.hs
+++ b/cabal-install/Distribution/Client/Sandbox/PackageEnvironment.hs
@@ -53,8 +53,7 @@ import Distribution.Verbosity          ( Verbosity, normal )
 import Control.Monad                   ( foldM, when, unless )
 import Data.List                       ( partition )
 import Data.Monoid                     ( Monoid(..) )
-import Distribution.Client.Compat.Exception
-                                       ( catchIO )
+import Distribution.Compat.Exception   ( catchIO )
 import System.Directory                ( doesDirectoryExist, doesFileExist,
                                          renameFile )
 import System.FilePath                 ( (<.>), (</>), takeDirectory )
diff --git a/cabal-install/Distribution/Client/Sandbox/Timestamp.hs b/cabal-install/Distribution/Client/Sandbox/Timestamp.hs
index a5b105d174..e6e4d30d60 100644
--- a/cabal-install/Distribution/Client/Sandbox/Timestamp.hs
+++ b/cabal-install/Distribution/Client/Sandbox/Timestamp.hs
@@ -50,7 +50,7 @@ import Distribution.Client.SetupWrapper              (SetupScriptOptions (..),
 import Distribution.Client.Utils                     (inDir, removeExistingFile,
                                                       tryCanonicalizePath)
 
-import Distribution.Client.Compat.Exception          (catchIO)
+import Distribution.Compat.Exception                 (catchIO)
 import Distribution.Client.Compat.Time               (EpochTime, getCurTime,
                                                       getModTime)
 
diff --git a/cabal-install/Distribution/Client/SetupWrapper.hs b/cabal-install/Distribution/Client/SetupWrapper.hs
index 68d94451fa..4e279b2adc 100644
--- a/cabal-install/Distribution/Client/SetupWrapper.hs
+++ b/cabal-install/Distribution/Client/SetupWrapper.hs
@@ -78,7 +78,7 @@ import Distribution.Text
          ( display )
 import Distribution.Verbosity
          ( Verbosity )
-import Distribution.Client.Compat.Exception
+import Distribution.Compat.Exception
          ( catchIO )
 
 import System.Directory  ( doesFileExist )
diff --git a/cabal-install/Distribution/Client/Utils.hs b/cabal-install/Distribution/Client/Utils.hs
index e134762275..b025c1143f 100644
--- a/cabal-install/Distribution/Client/Utils.hs
+++ b/cabal-install/Distribution/Client/Utils.hs
@@ -9,7 +9,7 @@ module Distribution.Client.Utils ( MergeResult(..)
                                  , canonicalizePathNoThrow )
        where
 
-import Distribution.Client.Compat.Exception ( catchIO )
+import Distribution.Compat.Exception ( catchIO )
 import qualified Data.ByteString.Lazy as BS
 import Control.Monad
          ( when )
diff --git a/cabal-install/Distribution/Client/World.hs b/cabal-install/Distribution/Client/World.hs
index 8ef77827b9..f77828e805 100644
--- a/cabal-install/Distribution/Client/World.hs
+++ b/cabal-install/Distribution/Client/World.hs
@@ -40,7 +40,7 @@ import Distribution.Simple.Utils
 import Distribution.Text
          ( Text(..), display, simpleParse )
 import qualified Distribution.Compat.ReadP as Parse
-import Distribution.Client.Compat.Exception ( catchIO )
+import Distribution.Compat.Exception ( catchIO )
 import qualified Text.PrettyPrint as Disp
 import Text.PrettyPrint ( (<>), (<+>) )
 
diff --git a/cabal-install/cabal-install.cabal b/cabal-install/cabal-install.cabal
index a787e14b2d..5a170f1182 100644
--- a/cabal-install/cabal-install.cabal
+++ b/cabal-install/cabal-install.cabal
@@ -105,7 +105,6 @@ executable cabal
         Distribution.Client.Utils
         Distribution.Client.World
         Distribution.Client.Win32SelfUpgrade
-        Distribution.Client.Compat.Exception
         Distribution.Client.Compat.Environment
         Distribution.Client.Compat.FilePerms
         Distribution.Client.Compat.Semaphore
-- 
GitLab