From 1aee4142c92487a8e89e52cad77fc9336b5e6ff4 Mon Sep 17 00:00:00 2001 From: Mikhail Glushenkov Date: Fri, 6 Mar 2015 06:45:36 +0100 Subject: [PATCH] -Wall police (GHC 7.10 edition). --- Cabal/Distribution/Compat/ReadP.hs | 6 +++++- Cabal/Distribution/PackageDescription.hs | 3 +++ Cabal/Distribution/PackageDescription/Parse.hs | 10 +++++++++- .../PackageDescription/PrettyPrint.hs | 3 +++ Cabal/Distribution/ParseUtils.hs | 3 +++ Cabal/Distribution/Simple/BuildTarget.hs | 6 +++++- Cabal/Distribution/Simple/CCompiler.hs | 3 +++ Cabal/Distribution/Simple/Command.hs | 5 ++++- Cabal/Distribution/Simple/Configure.hs | 3 +++ Cabal/Distribution/Simple/GHC.hs | 3 +++ Cabal/Distribution/Simple/GHC/Internal.hs | 3 +++ Cabal/Distribution/Simple/GHCJS.hs | 3 +++ Cabal/Distribution/Simple/InstallDirs.hs | 5 ++++- Cabal/Distribution/Simple/LHC.hs | 3 +++ Cabal/Distribution/Simple/PackageIndex.hs | 15 +++++++++------ Cabal/Distribution/Simple/Program/GHC.hs | 3 +++ Cabal/Distribution/Simple/Setup.hs | 3 +++ Cabal/Distribution/Utils/NubList.hs | 5 ++++- Cabal/tests/PackageTests/DeterministicAr/Check.hs | 3 +++ .../tests/UnitTests/Distribution/Utils/NubList.hs | 3 +++ cabal-install/Distribution/Client/Config.hs | 3 +++ cabal-install/Distribution/Client/Configure.hs | 3 +++ .../Client/Dependency/Modular/Preference.hs | 3 +++ .../Distribution/Client/Dependency/TopDown.hs | 3 +++ .../Client/Dependency/TopDown/Constraints.hs | 12 ++++++------ .../Distribution/Client/Dependency/Types.hs | 9 ++++++++- cabal-install/Distribution/Client/Exec.hs | 3 +++ cabal-install/Distribution/Client/Freeze.hs | 3 +++ cabal-install/Distribution/Client/Get.hs | 3 +++ cabal-install/Distribution/Client/IndexUtils.hs | 3 +++ cabal-install/Distribution/Client/Init.hs | 2 ++ .../Distribution/Client/Init/Heuristics.hs | 8 ++++++-- cabal-install/Distribution/Client/Init/Types.hs | 3 +++ cabal-install/Distribution/Client/PackageIndex.hs | 13 ++++++++----- cabal-install/Distribution/Client/Sandbox.hs | 8 ++++---- .../Client/Sandbox/PackageEnvironment.hs | 3 +++ .../Distribution/Client/Sandbox/Types.hs | 3 +++ cabal-install/Distribution/Client/Setup.hs | 6 ++++-- cabal-install/Distribution/Client/SetupWrapper.hs | 7 +++++-- cabal-install/Distribution/Client/Targets.hs | 3 +++ cabal-install/Main.hs | 2 ++ 41 files changed, 160 insertions(+), 34 deletions(-) diff --git a/Cabal/Distribution/Compat/ReadP.hs b/Cabal/Distribution/Compat/ReadP.hs index 7da893f38..3a50838e5 100644 --- a/Cabal/Distribution/Compat/ReadP.hs +++ b/Cabal/Distribution/Compat/ReadP.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} ----------------------------------------------------------------------------- -- | -- Module : Distribution.Compat.ReadP @@ -71,7 +72,10 @@ module Distribution.Compat.ReadP import Control.Monad( MonadPlus(..), liftM, liftM2, ap ) import Data.Char (isSpace) -import Control.Applicative (Applicative(..), Alternative(empty, (<|>))) +#if __GLASGOW_HASKELL__ < 710 +import Control.Applicative (Applicative(..)) +#endif +import Control.Applicative (Alternative(empty, (<|>))) infixr 5 +++, <++ diff --git a/Cabal/Distribution/PackageDescription.hs b/Cabal/Distribution/PackageDescription.hs index d1aaedcdb..c28fe9c37 100644 --- a/Cabal/Distribution/PackageDescription.hs +++ b/Cabal/Distribution/PackageDescription.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} @@ -109,7 +110,9 @@ import Distribution.Compat.Binary (Binary) import Data.Data (Data) import Data.List (nub, intercalate) import Data.Maybe (fromMaybe, maybeToList) +#if __GLASGOW_HASKELL__ < 710 import Data.Monoid (Monoid(mempty, mappend)) +#endif import Data.Typeable ( Typeable ) import Control.Monad (MonadPlus(mplus)) import GHC.Generics (Generic) diff --git a/Cabal/Distribution/PackageDescription/Parse.hs b/Cabal/Distribution/PackageDescription/Parse.hs index 3327edae0..0a4f59ecd 100644 --- a/Cabal/Distribution/PackageDescription/Parse.hs +++ b/Cabal/Distribution/PackageDescription/Parse.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} {-# LANGUAGE DeriveDataTypeable #-} ----------------------------------------------------------------------------- -- | @@ -42,10 +43,12 @@ module Distribution.PackageDescription.Parse ( import Data.Char (isSpace) import Data.Maybe (listToMaybe, isJust) -import Data.Monoid ( Monoid(..) ) import Data.List (nub, unfoldr, partition, (\\)) import Control.Monad (liftM, foldM, when, unless, ap) +#if __GLASGOW_HASKELL__ < 710 +import Data.Monoid ( Monoid(..) ) import Control.Applicative (Applicative(..)) +#endif import Control.Arrow (first) import System.Directory (doesFileExist) import qualified Data.ByteString.Lazy.Char8 as BS.Char8 @@ -622,10 +625,15 @@ newtype StT s m a = StT { runStT :: s -> m (a,s) } instance Functor f => Functor (StT s f) where fmap g (StT f) = StT $ fmap (first g) . f +#if __GLASGOW_HASKELL__ >= 710 +instance (Monad m) => Applicative (StT s m) where +#else instance (Monad m, Functor m) => Applicative (StT s m) where +#endif pure = return (<*>) = ap + instance Monad m => Monad (StT s m) where return a = StT (\s -> return (a,s)) StT f >>= g = StT $ \s -> do diff --git a/Cabal/Distribution/PackageDescription/PrettyPrint.hs b/Cabal/Distribution/PackageDescription/PrettyPrint.hs index d548c6548..c56eea630 100644 --- a/Cabal/Distribution/PackageDescription/PrettyPrint.hs +++ b/Cabal/Distribution/PackageDescription/PrettyPrint.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} ----------------------------------------------------------------------------- -- | -- Module : Distribution.PackageDescription.PrettyPrint @@ -17,7 +18,9 @@ module Distribution.PackageDescription.PrettyPrint ( showGenericPackageDescription, ) where +#if __GLASGOW_HASKELL__ < 710 import Data.Monoid (Monoid(mempty)) +#endif import Distribution.PackageDescription ( Benchmark(..), BenchmarkInterface(..), benchmarkType , TestSuite(..), TestSuiteInterface(..), testType diff --git a/Cabal/Distribution/ParseUtils.hs b/Cabal/Distribution/ParseUtils.hs index 0db249c0d..62011f420 100644 --- a/Cabal/Distribution/ParseUtils.hs +++ b/Cabal/Distribution/ParseUtils.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} ----------------------------------------------------------------------------- -- | -- Module : Distribution.ParseUtils @@ -61,7 +62,9 @@ import Data.Maybe (fromMaybe) import Data.Tree as Tree (Tree(..), flatten) import qualified Data.Map as Map import Control.Monad (foldM, ap) +#if __GLASGOW_HASKELL__ < 710 import Control.Applicative (Applicative(..)) +#endif import System.FilePath (normalise) import Data.List (sortBy) diff --git a/Cabal/Distribution/Simple/BuildTarget.hs b/Cabal/Distribution/Simple/BuildTarget.hs index 5c316c6c2..821a1d202 100644 --- a/Cabal/Distribution/Simple/BuildTarget.hs +++ b/Cabal/Distribution/Simple/BuildTarget.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} ----------------------------------------------------------------------------- -- | -- Module : Distribution.Client.BuildTargets @@ -55,7 +56,10 @@ import Data.Either ( partitionEithers ) import qualified Data.Map as Map import Control.Monad -import Control.Applicative (Applicative(..), Alternative(..)) +#if __GLASGOW_HASKELL__ < 710 +import Control.Applicative (Applicative(..)) +#endif +import Control.Applicative (Alternative(..)) import qualified Distribution.Compat.ReadP as Parse import Distribution.Compat.ReadP ( (+++), (<++) ) diff --git a/Cabal/Distribution/Simple/CCompiler.hs b/Cabal/Distribution/Simple/CCompiler.hs index 399c98bdf..b33417a44 100644 --- a/Cabal/Distribution/Simple/CCompiler.hs +++ b/Cabal/Distribution/Simple/CCompiler.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} ----------------------------------------------------------------------------- -- | -- Module : Distribution.Simple.CCompiler @@ -46,8 +47,10 @@ module Distribution.Simple.CCompiler ( filenameCDialect ) where +#if __GLASGOW_HASKELL__ < 710 import Data.Monoid ( Monoid(..) ) +#endif import System.FilePath ( takeExtension ) diff --git a/Cabal/Distribution/Simple/Command.hs b/Cabal/Distribution/Simple/Command.hs index b9064224d..ef81094f4 100644 --- a/Cabal/Distribution/Simple/Command.hs +++ b/Cabal/Distribution/Simple/Command.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} ----------------------------------------------------------------------------- -- | -- Module : Distribution.Simple.Command @@ -63,7 +64,9 @@ import Control.Monad import Data.Char (isAlpha, toLower) import Data.List (sortBy) import Data.Maybe +#if __GLASGOW_HASKELL__ < 710 import Data.Monoid +#endif import qualified Distribution.GetOpt as GetOpt import Distribution.Text ( Text(disp, parse) ) @@ -175,7 +178,7 @@ optArg' ad mkflag showflag = optArg ad (succeedReadE (mkflag . Just)) def showflag where def = mkflag Nothing -noArg :: (Eq b, Monoid b) => b -> MkOptDescr (a -> b) (b -> a -> a) a +noArg :: (Eq b) => b -> MkOptDescr (a -> b) (b -> a -> a) a noArg flag sf lf d = choiceOpt [(flag, (sf,lf), d)] sf lf d boolOpt :: (b -> Maybe Bool) -> (Bool -> b) -> SFlags -> SFlags diff --git a/Cabal/Distribution/Simple/Configure.hs b/Cabal/Distribution/Simple/Configure.hs index 6d4376a60..191f2ce30 100644 --- a/Cabal/Distribution/Simple/Configure.hs +++ b/Cabal/Distribution/Simple/Configure.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} @@ -135,8 +136,10 @@ import Data.Maybe import Data.Either ( partitionEithers ) import qualified Data.Set as Set +#if __GLASGOW_HASKELL__ < 710 import Data.Monoid ( Monoid(..) ) +#endif import qualified Data.Map as Map import Data.Map (Map) import Data.Traversable diff --git a/Cabal/Distribution/Simple/GHC.hs b/Cabal/Distribution/Simple/GHC.hs index c97b1d9bc..04d64a310 100644 --- a/Cabal/Distribution/Simple/GHC.hs +++ b/Cabal/Distribution/Simple/GHC.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} ----------------------------------------------------------------------------- -- | -- Module : Distribution.Simple.GHC @@ -107,7 +108,9 @@ import Data.Char ( isDigit, isSpace ) import Data.List import qualified Data.Map as M ( fromList ) import Data.Maybe ( catMaybes ) +#if __GLASGOW_HASKELL__ < 710 import Data.Monoid ( Monoid(..) ) +#endif import Data.Version ( showVersion ) import System.Directory ( doesFileExist, getAppUserDataDirectory, createDirectoryIfMissing ) diff --git a/Cabal/Distribution/Simple/GHC/Internal.hs b/Cabal/Distribution/Simple/GHC/Internal.hs index 2c07cd874..9431cb4c8 100644 --- a/Cabal/Distribution/Simple/GHC/Internal.hs +++ b/Cabal/Distribution/Simple/GHC/Internal.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} ----------------------------------------------------------------------------- -- | -- Module : Distribution.Simple.GHC.Internal @@ -66,7 +67,9 @@ import qualified Data.Map as M import Data.Char ( isSpace ) import Data.Maybe ( fromMaybe, maybeToList, isJust ) import Control.Monad ( unless, when ) +#if __GLASGOW_HASKELL__ < 710 import Data.Monoid ( Monoid(..) ) +#endif import System.Directory ( getDirectoryContents, getTemporaryDirectory ) import System.Environment ( getEnv ) import System.FilePath ( (), (<.>), takeExtension, takeDirectory ) diff --git a/Cabal/Distribution/Simple/GHCJS.hs b/Cabal/Distribution/Simple/GHCJS.hs index e02d49ed7..b2cfae443 100644 --- a/Cabal/Distribution/Simple/GHCJS.hs +++ b/Cabal/Distribution/Simple/GHCJS.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} module Distribution.Simple.GHCJS ( configure, getInstalledPackages, getPackageDBContents, buildLib, buildExe, @@ -71,7 +72,9 @@ import Language.Haskell.Extension ( Extension(..) import Control.Monad ( unless, when ) import Data.Char ( isSpace ) import qualified Data.Map as M ( fromList ) +#if __GLASGOW_HASKELL__ < 710 import Data.Monoid ( Monoid(..) ) +#endif import System.Directory ( doesFileExist ) import System.FilePath ( (), (<.>), takeExtension, takeDirectory, replaceExtension, diff --git a/Cabal/Distribution/Simple/InstallDirs.hs b/Cabal/Distribution/Simple/InstallDirs.hs index 3ba865a27..41f4d9173 100644 --- a/Cabal/Distribution/Simple/InstallDirs.hs +++ b/Cabal/Distribution/Simple/InstallDirs.hs @@ -1,4 +1,5 @@ -{-# LANGUAGE CPP, ForeignFunctionInterface #-} +{-# LANGUAGE CPP #-} +{-# LANGUAGE ForeignFunctionInterface #-} {-# LANGUAGE DeriveGeneric #-} ----------------------------------------------------------------------------- @@ -47,7 +48,9 @@ module Distribution.Simple.InstallDirs ( import Distribution.Compat.Binary (Binary) import Data.List (isPrefixOf) import Data.Maybe (fromMaybe) +#if __GLASGOW_HASKELL__ < 710 import Data.Monoid (Monoid(..)) +#endif import GHC.Generics (Generic) import System.Directory (getAppUserDataDirectory) import System.FilePath ((), isPathSeparator, pathSeparator) diff --git a/Cabal/Distribution/Simple/LHC.hs b/Cabal/Distribution/Simple/LHC.hs index c0bc5952e..2c63a67ee 100644 --- a/Cabal/Distribution/Simple/LHC.hs +++ b/Cabal/Distribution/Simple/LHC.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} ----------------------------------------------------------------------------- -- | -- Module : Distribution.Simple.LHC @@ -90,7 +91,9 @@ import Control.Monad ( unless, when ) import Data.List import qualified Data.Map as M ( empty ) import Data.Maybe ( catMaybes ) +#if __GLASGOW_HASKELL__ < 710 import Data.Monoid ( Monoid(..) ) +#endif import System.Directory ( removeFile, renameFile, getDirectoryContents, doesFileExist, getTemporaryDirectory ) diff --git a/Cabal/Distribution/Simple/PackageIndex.hs b/Cabal/Distribution/Simple/PackageIndex.hs index d1b15eef7..c03f52b9b 100644 --- a/Cabal/Distribution/Simple/PackageIndex.hs +++ b/Cabal/Distribution/Simple/PackageIndex.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} {-# LANGUAGE DeriveGeneric #-} ----------------------------------------------------------------------------- @@ -79,7 +80,9 @@ import qualified Data.Graph as Graph import Data.List as List ( null, foldl', sort , groupBy, sortBy, find, isInfixOf, nubBy, deleteBy, deleteFirstsBy ) +#if __GLASGOW_HASKELL__ < 710 import Data.Monoid (Monoid(..)) +#endif import Data.Map (Map) import qualified Data.Map as Map import Data.Maybe (isNothing, fromMaybe) @@ -379,7 +382,7 @@ allPackagesBySourcePackageId (PackageIndex _ pnames) = -- Since multiple package DBs mask each other by 'InstalledPackageId', -- then we get back at most one package. -- -lookupInstalledPackageId :: PackageInstalled a => PackageIndex a -> InstalledPackageId +lookupInstalledPackageId :: PackageIndex a -> InstalledPackageId -> Maybe a lookupInstalledPackageId (PackageIndex pids _) pid = Map.lookup pid pids @@ -390,7 +393,7 @@ lookupInstalledPackageId (PackageIndex pids _) pid = Map.lookup pid pids -- but different 'InstalledPackageId'. They are returned in order of -- preference, with the most preferred first. -- -lookupSourcePackageId :: PackageInstalled a => PackageIndex a -> PackageId -> [a] +lookupSourcePackageId :: PackageIndex a -> PackageId -> [a] lookupSourcePackageId (PackageIndex _ pnames) pkgid = case Map.lookup (packageName pkgid) pnames of Nothing -> [] @@ -408,7 +411,7 @@ lookupPackageId index pkgid = case lookupSourcePackageId index pkgid of -- | Does a lookup by source package name. -- -lookupPackageName :: PackageInstalled a => PackageIndex a -> PackageName +lookupPackageName :: PackageIndex a -> PackageName -> [(Version, [a])] lookupPackageName (PackageIndex _ pnames) name = case Map.lookup name pnames of @@ -421,7 +424,7 @@ lookupPackageName (PackageIndex _ pnames) name = -- We get back any number of versions of the specified package name, all -- satisfying the version range constraint. -- -lookupDependency :: PackageInstalled a => PackageIndex a -> Dependency +lookupDependency :: PackageIndex a -> Dependency -> [(Version, [a])] lookupDependency (PackageIndex _ pnames) (Dependency name versionRange) = case Map.lookup name pnames of @@ -446,7 +449,7 @@ lookupDependency (PackageIndex _ pnames) (Dependency name versionRange) = -- packages. The list of ambiguous results is split by exact package name. So -- it is a non-empty list of non-empty lists. -- -searchByName :: PackageInstalled a => PackageIndex a -> String -> SearchResult [a] +searchByName :: PackageIndex a -> String -> SearchResult [a] searchByName (PackageIndex _ pnames) name = case [ pkgs | pkgs@(PackageName name',_) <- Map.toList pnames , lowercase name' == lname ] of @@ -463,7 +466,7 @@ data SearchResult a = None | Unambiguous a | Ambiguous [a] -- -- That is, all packages that contain the given string in their name. -- -searchByNameSubstring :: PackageInstalled a => PackageIndex a -> String -> [a] +searchByNameSubstring :: PackageIndex a -> String -> [a] searchByNameSubstring (PackageIndex _ pnames) searchterm = [ pkg | (PackageName name, pvers) <- Map.toList pnames diff --git a/Cabal/Distribution/Simple/Program/GHC.hs b/Cabal/Distribution/Simple/Program/GHC.hs index 4473b8511..fbdc99702 100644 --- a/Cabal/Distribution/Simple/Program/GHC.hs +++ b/Cabal/Distribution/Simple/Program/GHC.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} module Distribution.Simple.Program.GHC ( GhcOptions(..), GhcMode(..), @@ -26,7 +27,9 @@ import Distribution.Utils.NubList ( NubListR, fromNubListR ) import Language.Haskell.Extension ( Language(..), Extension(..) ) import qualified Data.Map as M +#if __GLASGOW_HASKELL__ < 710 import Data.Monoid +#endif import Data.List ( intercalate ) -- | A structured set of GHC options/flags diff --git a/Cabal/Distribution/Simple/Setup.hs b/Cabal/Distribution/Simple/Setup.hs index 4ddeb112e..d11ef5ca5 100644 --- a/Cabal/Distribution/Simple/Setup.hs +++ b/Cabal/Distribution/Simple/Setup.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} {-# LANGUAGE DeriveGeneric #-} ----------------------------------------------------------------------------- @@ -103,7 +104,9 @@ import Control.Monad (liftM) import Distribution.Compat.Binary (Binary) import Data.List ( sort ) import Data.Char ( isSpace, isAlpha ) +#if __GLASGOW_HASKELL__ < 710 import Data.Monoid ( Monoid(..) ) +#endif import GHC.Generics (Generic) -- FIXME Not sure where this should live diff --git a/Cabal/Distribution/Utils/NubList.hs b/Cabal/Distribution/Utils/NubList.hs index 60429520b..888a68969 100644 --- a/Cabal/Distribution/Utils/NubList.hs +++ b/Cabal/Distribution/Utils/NubList.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} module Distribution.Utils.NubList ( NubList -- opaque , toNubList -- smart construtor @@ -11,7 +12,9 @@ module Distribution.Utils.NubList ) where import Distribution.Compat.Binary +#if __GLASGOW_HASKELL__ < 710 import Data.Monoid +#endif import Distribution.Simple.Utils (ordNub, listUnion, ordNubRight, listUnionRight) @@ -60,7 +63,7 @@ instance (Ord a, Read a) => Read (NubList a) where readPrec = readNubList toNubList -- | Helper used by NubList/NubListR's Read instances. -readNubList :: (Ord a, Read a) => ([a] -> l a) -> R.ReadPrec (l a) +readNubList :: (Read a) => ([a] -> l a) -> R.ReadPrec (l a) readNubList toList = R.parens . R.prec 10 $ fmap toList R.readPrec -- | Binary instance for 'NubList a' is the same as for '[a]'. For 'put', we diff --git a/Cabal/tests/PackageTests/DeterministicAr/Check.hs b/Cabal/tests/PackageTests/DeterministicAr/Check.hs index 28d94ef60..cf5562396 100644 --- a/Cabal/tests/PackageTests/DeterministicAr/Check.hs +++ b/Cabal/tests/PackageTests/DeterministicAr/Check.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} {-# LANGUAGE OverloadedStrings #-} module PackageTests.DeterministicAr.Check where @@ -7,7 +8,9 @@ import qualified Data.ByteString as BS import qualified Data.ByteString.Char8 as BS8 import Data.Char (isSpace) import Data.List +#if __GLASGOW_HASKELL__ < 710 import Data.Traversable +#endif import PackageTests.PackageTester import System.Exit import System.FilePath diff --git a/Cabal/tests/UnitTests/Distribution/Utils/NubList.hs b/Cabal/tests/UnitTests/Distribution/Utils/NubList.hs index ba0523873..b0093cec7 100644 --- a/Cabal/tests/UnitTests/Distribution/Utils/NubList.hs +++ b/Cabal/tests/UnitTests/Distribution/Utils/NubList.hs @@ -1,8 +1,11 @@ +{-# LANGUAGE CPP #-} module UnitTests.Distribution.Utils.NubList ( tests ) where +#if __GLASGOW_HASKELL__ < 710 import Data.Monoid +#endif import Distribution.Utils.NubList import Test.Framework import Test.Framework.Providers.HUnit (testCase) diff --git a/cabal-install/Distribution/Client/Config.hs b/cabal-install/Distribution/Client/Config.hs index 78219f841..f6245a2e2 100644 --- a/cabal-install/Distribution/Client/Config.hs +++ b/cabal-install/Distribution/Client/Config.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} ----------------------------------------------------------------------------- -- | -- Module : Distribution.Client.Config @@ -91,8 +92,10 @@ import Data.List ( partition, find, foldl' ) import Data.Maybe ( fromMaybe ) +#if !MIN_VERSION_base(4,8,0) import Data.Monoid ( Monoid(..) ) +#endif import Control.Monad ( unless, foldM, liftM, liftM2 ) import qualified Distribution.Compat.ReadP as Parse diff --git a/cabal-install/Distribution/Client/Configure.hs b/cabal-install/Distribution/Client/Configure.hs index 03186d408..4d209d98c 100644 --- a/cabal-install/Distribution/Client/Configure.hs +++ b/cabal-install/Distribution/Client/Configure.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} ----------------------------------------------------------------------------- -- | -- Module : Distribution.Client.Configure @@ -55,7 +56,9 @@ import Distribution.Verbosity as Verbosity import Distribution.Version ( Version(..), VersionRange, orLaterVersion ) +#if !MIN_VERSION_base(4,8,0) import Data.Monoid (Monoid(..)) +#endif -- | Choose the Cabal version such that the setup scripts compiled against this -- version will support the given command-line flags. diff --git a/cabal-install/Distribution/Client/Dependency/Modular/Preference.hs b/cabal-install/Distribution/Client/Dependency/Modular/Preference.hs index 9863ca3c1..005eeb1ec 100644 --- a/cabal-install/Distribution/Client/Dependency/Modular/Preference.hs +++ b/cabal-install/Distribution/Client/Dependency/Modular/Preference.hs @@ -1,10 +1,13 @@ +{-# LANGUAGE CPP #-} module Distribution.Client.Dependency.Modular.Preference where -- Reordering or pruning the tree in order to prefer or make certain choices. import qualified Data.List as L import qualified Data.Map as M +#if !MIN_VERSION_base(4,8,0) import Data.Monoid +#endif import Data.Ord import Distribution.Client.Dependency.Types diff --git a/cabal-install/Distribution/Client/Dependency/TopDown.hs b/cabal-install/Distribution/Client/Dependency/TopDown.hs index 841323611..b7f3a7be0 100644 --- a/cabal-install/Distribution/Client/Dependency/TopDown.hs +++ b/cabal-install/Distribution/Client/Dependency/TopDown.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} ----------------------------------------------------------------------------- -- | -- Module : Distribution.Client.Dependency.Types @@ -59,8 +60,10 @@ import Data.List ( foldl', maximumBy, minimumBy, nub, sort, sortBy, groupBy ) import Data.Maybe ( fromJust, fromMaybe, catMaybes ) +#if !MIN_VERSION_base(4,8,0) import Data.Monoid ( Monoid(mempty) ) +#endif import Control.Monad ( guard ) import qualified Data.Set as Set diff --git a/cabal-install/Distribution/Client/Dependency/TopDown/Constraints.hs b/cabal-install/Distribution/Client/Dependency/TopDown/Constraints.hs index b6a03b084..006288c1a 100644 --- a/cabal-install/Distribution/Client/Dependency/TopDown/Constraints.hs +++ b/cabal-install/Distribution/Client/Dependency/TopDown/Constraints.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} ----------------------------------------------------------------------------- -- | -- Module : Distribution.Client.Dependency.TopDown.Constraints @@ -35,8 +36,10 @@ import Distribution.Version import Distribution.Client.Utils ( mergeBy, MergeResult(..) ) +#if !MIN_VERSION_base(4,8,0) import Data.Monoid ( Monoid(mempty) ) +#endif import Data.Either ( partitionEithers ) import qualified Data.Map as Map @@ -256,21 +259,18 @@ empty installed source = -- | The package targets. -- -packages :: (Package installed, Package source) - => Constraints installed source reason +packages :: Constraints installed source reason -> Set PackageName packages (Constraints ts _ _ _ _) = ts -- | The package choices that are still available. -- -choices :: (Package installed, Package source) - => Constraints installed source reason +choices :: Constraints installed source reason -> PackageIndex (InstalledOrSource installed source) choices (Constraints _ available _ _ _) = available -isPaired :: (Package installed, Package source) - => Constraints installed source reason +isPaired :: Constraints installed source reason -> PackageId -> Maybe PackageId isPaired (Constraints _ _ _ pairs _) (PackageIdentifier name version) = case Map.lookup name pairs of diff --git a/cabal-install/Distribution/Client/Dependency/Types.hs b/cabal-install/Distribution/Client/Dependency/Types.hs index b9421b88c..da10fb92e 100644 --- a/cabal-install/Distribution/Client/Dependency/Types.hs +++ b/cabal-install/Distribution/Client/Dependency/Types.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} {-# LANGUAGE DeriveFunctor #-} ----------------------------------------------------------------------------- -- | @@ -29,13 +30,19 @@ module Distribution.Client.Dependency.Types ( foldProgress, ) where +#if !MIN_VERSION_base(4,8,0) import Control.Applicative - ( Applicative(..), Alternative(..) ) + ( Applicative(..) ) +#endif +import Control.Applicative + ( Alternative(..) ) import Data.Char ( isAlpha, toLower ) +#if !MIN_VERSION_base(4,8,0) import Data.Monoid ( Monoid(..) ) +#endif import Distribution.Client.Types ( OptionalStanza(..), SourcePackage(..) ) diff --git a/cabal-install/Distribution/Client/Exec.hs b/cabal-install/Distribution/Client/Exec.hs index df28ddb52..f04754067 100644 --- a/cabal-install/Distribution/Client/Exec.hs +++ b/cabal-install/Distribution/Client/Exec.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} ----------------------------------------------------------------------------- -- | -- Module : Distribution.Client.Exec @@ -31,7 +32,9 @@ import Distribution.Verbosity (Verbosity) import System.FilePath (searchPathSeparator, ()) import Control.Applicative ((<$>)) +#if !MIN_VERSION_base(4,8,0) import Data.Monoid (mempty) +#endif -- | Execute the given command in the package's environment. diff --git a/cabal-install/Distribution/Client/Freeze.hs b/cabal-install/Distribution/Client/Freeze.hs index 080cc4078..a33c0aaac 100644 --- a/cabal-install/Distribution/Client/Freeze.hs +++ b/cabal-install/Distribution/Client/Freeze.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} ----------------------------------------------------------------------------- -- | -- Module : Distribution.Client.Freeze @@ -54,8 +55,10 @@ import Distribution.Verbosity import Control.Monad ( when ) import qualified Data.ByteString.Lazy.Char8 as BS.Char8 +#if !MIN_VERSION_base(4,8,0) import Data.Monoid ( mempty ) +#endif import Data.Version ( showVersion ) import Distribution.Version diff --git a/cabal-install/Distribution/Client/Get.hs b/cabal-install/Distribution/Client/Get.hs index 3d570b9c6..1c288ad96 100644 --- a/cabal-install/Distribution/Client/Get.hs +++ b/cabal-install/Distribution/Client/Get.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} ----------------------------------------------------------------------------- -- | -- Module : Distribution.Client.Get @@ -51,8 +52,10 @@ import Data.List import qualified Data.Map import Data.Maybe ( listToMaybe, mapMaybe ) +#if !MIN_VERSION_base(4,8,0) import Data.Monoid ( mempty ) +#endif import Data.Ord ( comparing ) import System.Directory diff --git a/cabal-install/Distribution/Client/IndexUtils.hs b/cabal-install/Distribution/Client/IndexUtils.hs index b9fe2e520..70b58d8a8 100644 --- a/cabal-install/Distribution/Client/IndexUtils.hs +++ b/cabal-install/Distribution/Client/IndexUtils.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} ----------------------------------------------------------------------------- -- | -- Module : Distribution.Client.IndexUtils @@ -63,7 +64,9 @@ import Distribution.Simple.Utils import Data.Char (isAlphaNum) import Data.Maybe (mapMaybe, fromMaybe) import Data.List (isPrefixOf) +#if !MIN_VERSION_base(4,8,0) import Data.Monoid (Monoid(..)) +#endif import qualified Data.Map as Map import Control.Monad (MonadPlus(mplus), when, liftM) import Control.Exception (evaluate) diff --git a/cabal-install/Distribution/Client/Init.hs b/cabal-install/Distribution/Client/Init.hs index 19d40a99e..4e4e99be3 100644 --- a/cabal-install/Distribution/Client/Init.hs +++ b/cabal-install/Distribution/Client/Init.hs @@ -40,8 +40,10 @@ import Data.Maybe import Data.Function ( on ) import qualified Data.Map as M +#if !MIN_VERSION_base(4,8,0) import Data.Traversable ( traverse ) +#endif import Control.Applicative ( (<$>) ) import Control.Monad diff --git a/cabal-install/Distribution/Client/Init/Heuristics.hs b/cabal-install/Distribution/Client/Init/Heuristics.hs index 085106a21..7fd854d11 100644 --- a/cabal-install/Distribution/Client/Init/Heuristics.hs +++ b/cabal-install/Distribution/Client/Init/Heuristics.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} ----------------------------------------------------------------------------- -- | -- Module : Distribution.Client.Init.Heuristics @@ -35,14 +36,17 @@ import Distribution.Client.Utils import Language.Haskell.Extension ( Extension ) import Distribution.Client.Types ( packageDescription, SourcePackageDb(..) ) -import Control.Applicative ( pure, (<$>), (<*>) ) +#if !MIN_VERSION_base(4,8,0) +import Control.Applicative ( pure, (<*>) ) +import Data.Monoid ( mempty, mappend, mconcat ) +#endif import Control.Arrow ( first ) import Control.Monad ( liftM ) import Data.Char ( isAlphaNum, isNumber, isUpper, isLower, isSpace ) import Data.Either ( partitionEithers ) +import Data.Functor( (<$>) ) import Data.List ( isInfixOf, isPrefixOf, isSuffixOf, sortBy ) import Data.Maybe ( mapMaybe, catMaybes, maybeToList ) -import Data.Monoid ( mempty, mappend, mconcat, ) import Data.Ord ( comparing ) import qualified Data.Set as Set ( fromList, toList ) import System.Directory ( getCurrentDirectory, getDirectoryContents, diff --git a/cabal-install/Distribution/Client/Init/Types.hs b/cabal-install/Distribution/Client/Init/Types.hs index e3ece7e79..88357dabb 100644 --- a/cabal-install/Distribution/Client/Init/Types.hs +++ b/cabal-install/Distribution/Client/Init/Types.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} ----------------------------------------------------------------------------- -- | -- Module : Distribution.Client.Init.Types @@ -27,7 +28,9 @@ import qualified Text.PrettyPrint as Disp import qualified Distribution.Compat.ReadP as Parse import Distribution.Text +#if !MIN_VERSION_base(4,8,0) import Data.Monoid +#endif -- | InitFlags is really just a simple type to represent certain -- portions of a .cabal file. Rather than have a flag for EVERY diff --git a/cabal-install/Distribution/Client/PackageIndex.hs b/cabal-install/Distribution/Client/PackageIndex.hs index 2248c1035..4a4a70857 100644 --- a/cabal-install/Distribution/Client/PackageIndex.hs +++ b/cabal-install/Distribution/Client/PackageIndex.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} {-# LANGUAGE DeriveFunctor #-} ----------------------------------------------------------------------------- -- | @@ -63,7 +64,9 @@ import qualified Data.Graph as Graph import qualified Data.Array as Array import Data.Array ((!)) import Data.List (groupBy, sortBy, nub, isInfixOf) +#if !MIN_VERSION_base(4,8,0) import Data.Monoid (Monoid(..)) +#endif import Data.Maybe (isJust, isNothing, fromMaybe, catMaybes) import Distribution.Package @@ -123,7 +126,7 @@ internalError name = error ("PackageIndex." ++ name ++ ": internal error") -- | Lookup a name in the index to get all packages that match that name -- case-sensitively. -- -lookup :: Package pkg => PackageIndex pkg -> PackageName -> [pkg] +lookup :: PackageIndex pkg -> PackageName -> [pkg] lookup (PackageIndex m) name = fromMaybe [] $ Map.lookup name m -- @@ -225,14 +228,14 @@ deleteDependency (Dependency name verstionRange) = -- | Get all the packages from the index. -- -allPackages :: Package pkg => PackageIndex pkg -> [pkg] +allPackages :: PackageIndex pkg -> [pkg] allPackages (PackageIndex m) = concat (Map.elems m) -- | Get all the packages from the index. -- -- They are grouped by package name, case-sensitively. -- -allPackagesByName :: Package pkg => PackageIndex pkg -> [[pkg]] +allPackagesByName :: PackageIndex pkg -> [[pkg]] allPackagesByName (PackageIndex m) = Map.elems m -- @@ -293,7 +296,7 @@ lookupDependency index (Dependency name versionRange) = -- packages. The list of ambiguous results is split by exact package name. So -- it is a non-empty list of non-empty lists. -- -searchByName :: Package pkg => PackageIndex pkg +searchByName :: PackageIndex pkg -> String -> [(PackageName, [pkg])] searchByName (PackageIndex m) name = [ pkgs @@ -308,7 +311,7 @@ data SearchResult a = None | Unambiguous a | Ambiguous [a] -- -- That is, all packages that contain the given string in their name. -- -searchByNameSubstring :: Package pkg => PackageIndex pkg +searchByNameSubstring :: PackageIndex pkg -> String -> [(PackageName, [pkg])] searchByNameSubstring (PackageIndex m) searchterm = [ pkgs diff --git a/cabal-install/Distribution/Client/Sandbox.hs b/cabal-install/Distribution/Client/Sandbox.hs index 663dd2582..561d6f833 100644 --- a/cabal-install/Distribution/Client/Sandbox.hs +++ b/cabal-install/Distribution/Client/Sandbox.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} ----------------------------------------------------------------------------- -- | -- Module : Distribution.Client.Sandbox @@ -104,7 +105,9 @@ import Data.Char ( ord ) import Data.IORef ( newIORef, writeIORef, readIORef ) import Data.List ( delete, foldl' ) import Data.Maybe ( fromJust, fromMaybe ) +#if !MIN_VERSION_base(4,8,0) import Data.Monoid ( mempty, mappend ) +#endif import Data.Word ( Word32 ) import Numeric ( showHex ) import System.Directory ( createDirectory @@ -595,10 +598,7 @@ reinstallAddSourceDeps verbosity configFlags' configExFlags die' message = die (message ++ installFailedInSandbox) -- TODO: use a better error message, remove duplication. installFailedInSandbox = - "Note: when using a sandbox, all packages are required to have \ - \consistent dependencies. \ - \Try reinstalling/unregistering the offending packages or \ - \recreating the sandbox." + "Note: when using a sandbox, all packages are required to have consistent dependencies. Try reinstalling/unregistering the offending packages or recreating the sandbox." logMsg message rest = debugNoWrap verbosity message >> rest topHandler' = topHandlerWith $ \_ -> do diff --git a/cabal-install/Distribution/Client/Sandbox/PackageEnvironment.hs b/cabal-install/Distribution/Client/Sandbox/PackageEnvironment.hs index 56cb86542..e6a68e567 100644 --- a/cabal-install/Distribution/Client/Sandbox/PackageEnvironment.hs +++ b/cabal-install/Distribution/Client/Sandbox/PackageEnvironment.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} ----------------------------------------------------------------------------- -- | -- Module : Distribution.Client.Sandbox.PackageEnvironment @@ -60,7 +61,9 @@ import Distribution.Verbosity ( Verbosity, normal ) import Control.Monad ( foldM, liftM2, when, unless ) import Data.List ( partition ) import Data.Maybe ( isJust ) +#if !MIN_VERSION_base(4,8,0) import Data.Monoid ( Monoid(..) ) +#endif import Distribution.Compat.Exception ( catchIO ) import System.Directory ( doesDirectoryExist, doesFileExist , renameFile ) diff --git a/cabal-install/Distribution/Client/Sandbox/Types.hs b/cabal-install/Distribution/Client/Sandbox/Types.hs index a929cce83..9396ce3b0 100644 --- a/cabal-install/Distribution/Client/Sandbox/Types.hs +++ b/cabal-install/Distribution/Client/Sandbox/Types.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} ----------------------------------------------------------------------------- -- | -- Module : Distribution.Client.Sandbox.Types @@ -15,7 +16,9 @@ module Distribution.Client.Sandbox.Types ( import qualified Distribution.Simple.PackageIndex as InstalledPackageIndex import Distribution.Client.Types (SourcePackage) +#if !MIN_VERSION_base(4,8,0) import Data.Monoid +#endif import qualified Data.Set as S -- | Are we using a sandbox? diff --git a/cabal-install/Distribution/Client/Setup.hs b/cabal-install/Distribution/Client/Setup.hs index 9da8aaac4..a076c0a83 100644 --- a/cabal-install/Distribution/Client/Setup.hs +++ b/cabal-install/Distribution/Client/Setup.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} ----------------------------------------------------------------------------- -- | -- Module : Distribution.Client.Setup @@ -95,8 +96,10 @@ import Data.List ( intercalate, deleteFirstsBy ) import Data.Maybe ( listToMaybe, maybeToList, fromMaybe ) +#if !MIN_VERSION_base(4,8,0) import Data.Monoid ( Monoid(..) ) +#endif import Control.Monad ( liftM ) import System.FilePath @@ -271,8 +274,7 @@ globalCommand commands = CommandUI { (reqArgFlag "FILE") ,option [] ["sandbox-config-file"] - "Set an alternate location for the sandbox config file \ - \(default: './cabal.sandbox.config')" + "Set an alternate location for the sandbox config file (default: './cabal.sandbox.config')" globalConfigFile (\v flags -> flags { globalSandboxConfigFile = v }) (reqArgFlag "FILE") diff --git a/cabal-install/Distribution/Client/SetupWrapper.hs b/cabal-install/Distribution/Client/SetupWrapper.hs index 1d257bc78..12b822587 100644 --- a/cabal-install/Distribution/Client/SetupWrapper.hs +++ b/cabal-install/Distribution/Client/SetupWrapper.hs @@ -97,11 +97,14 @@ import System.FilePath ( (), (<.>) ) import System.IO ( Handle, hPutStr ) import System.Exit ( ExitCode(..), exitWith ) import System.Process ( runProcess, waitForProcess ) -import Control.Applicative ( (<$>), (<*>) ) +#if !MIN_VERSION_base(4,8,0) +import Control.Applicative ( (<*>) ) +import Data.Monoid ( mempty ) +#endif +import Control.Applicative ( (<$>) ) import Control.Monad ( when, unless ) import Data.List ( foldl1' ) import Data.Maybe ( fromMaybe, isJust ) -import Data.Monoid ( mempty ) import Data.Char ( isSpace ) #ifdef mingw32_HOST_OS diff --git a/cabal-install/Distribution/Client/Targets.hs b/cabal-install/Distribution/Client/Targets.hs index f56f872bb..4923fae4a 100644 --- a/cabal-install/Distribution/Client/Targets.hs +++ b/cabal-install/Distribution/Client/Targets.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} ----------------------------------------------------------------------------- -- | -- Module : Distribution.Client.Targets @@ -79,8 +80,10 @@ import Data.Maybe ( listToMaybe ) import Data.Either ( partitionEithers ) +#if !MIN_VERSION_base(4,8,0) import Data.Monoid ( Monoid(..) ) +#endif import qualified Data.Map as Map import qualified Data.ByteString.Lazy as BS import qualified Data.ByteString.Lazy.Char8 as BS.Char8 diff --git a/cabal-install/Main.hs b/cabal-install/Main.hs index 489d69abc..b04af2c65 100644 --- a/cabal-install/Main.hs +++ b/cabal-install/Main.hs @@ -154,7 +154,9 @@ import System.IO ( BufferMode(LineBuffering), hSetBuffering import System.Directory (doesFileExist, getCurrentDirectory) import Data.List (intercalate) import Data.Maybe (mapMaybe) +#if !MIN_VERSION_base(4,8,0) import Data.Monoid (Monoid(..)) +#endif import Control.Monad (when, unless) -- | Entry point -- GitLab