From 36b8a2425501a0a3321c4bfda825a2f446747d7f Mon Sep 17 00:00:00 2001 From: Georgi Lyubenov Date: Thu, 16 Jun 2022 17:50:02 +0300 Subject: [PATCH 1/2] Future compat for liftA2 being exported from Prelude --- Cabal-syntax/src/Distribution/Fields/ParseResult.hs | 4 ++-- Cabal-syntax/src/Distribution/System.hs | 7 ++++++- Cabal-syntax/src/Distribution/Types/VersionInterval.hs | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/Cabal-syntax/src/Distribution/Fields/ParseResult.hs b/Cabal-syntax/src/Distribution/Fields/ParseResult.hs index b7dbcf4a220..c4218cf0633 100644 --- a/Cabal-syntax/src/Distribution/Fields/ParseResult.hs +++ b/Cabal-syntax/src/Distribution/Fields/ParseResult.hs @@ -17,7 +17,7 @@ module Distribution.Fields.ParseResult ( withoutWarnings, ) where -import Distribution.Compat.Prelude +import Distribution.Compat.Prelude hiding (Applicative(..)) import Distribution.Parsec.Error (PError (..)) import Distribution.Parsec.Position (Position (..), zeroPos) import Distribution.Parsec.Warning (PWarnType (..), PWarning (..)) @@ -25,7 +25,7 @@ import Distribution.Version (Version) import Prelude () #if MIN_VERSION_base(4,10,0) -import Control.Applicative (Applicative (..)) +import Control.Applicative (Applicative (..)) #endif -- | A monad with failure and accumulating errors and warnings. diff --git a/Cabal-syntax/src/Distribution/System.hs b/Cabal-syntax/src/Distribution/System.hs index 62b52a20ce6..68bda631f19 100644 --- a/Cabal-syntax/src/Distribution/System.hs +++ b/Cabal-syntax/src/Distribution/System.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleContexts #-} @@ -42,8 +43,12 @@ module Distribution.System ( ) where import Prelude () -import Distribution.Compat.Prelude +import Distribution.Compat.Prelude hiding (Applicative(..)) +import Control.Applicative (Applicative(..)) + +#if !MIN_VERSION_base(4,10,0) import Control.Applicative (liftA2) +#endif import qualified System.Info (os, arch) import Distribution.Utils.Generic (lowercase) diff --git a/Cabal-syntax/src/Distribution/Types/VersionInterval.hs b/Cabal-syntax/src/Distribution/Types/VersionInterval.hs index 96d6df0d3f6..cc8c3966349 100644 --- a/Cabal-syntax/src/Distribution/Types/VersionInterval.hs +++ b/Cabal-syntax/src/Distribution/Types/VersionInterval.hs @@ -38,7 +38,7 @@ module Distribution.Types.VersionInterval ( import Control.Applicative (liftA2) import Control.Exception (assert) -import Distribution.Compat.Prelude +import Distribution.Compat.Prelude hiding (Applicative(..)) import Prelude () import Distribution.Types.Version From 6af550797c58be46693b6a1658c86288ecb8af29 Mon Sep 17 00:00:00 2001 From: Georgi Lyubenov Date: Fri, 17 Jun 2022 13:01:19 +0300 Subject: [PATCH 2/2] Work around base <4.10 --- Cabal-syntax/src/Distribution/Fields/ParseResult.hs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Cabal-syntax/src/Distribution/Fields/ParseResult.hs b/Cabal-syntax/src/Distribution/Fields/ParseResult.hs index c4218cf0633..f300fc115f8 100644 --- a/Cabal-syntax/src/Distribution/Fields/ParseResult.hs +++ b/Cabal-syntax/src/Distribution/Fields/ParseResult.hs @@ -17,15 +17,21 @@ module Distribution.Fields.ParseResult ( withoutWarnings, ) where -import Distribution.Compat.Prelude hiding (Applicative(..)) import Distribution.Parsec.Error (PError (..)) import Distribution.Parsec.Position (Position (..), zeroPos) import Distribution.Parsec.Warning (PWarnType (..), PWarning (..)) import Distribution.Version (Version) import Prelude () +-- liftA2 is not in base <4.10, hence we need to only import it explicitly when we're on >=4.10 +-- +-- Additionally, since liftA2 will be exported from Prelude starting with ~4.18, we should hide +-- it from Prelude and get it from Control.Applicative to be backwards compatible and avoid warnings #if MIN_VERSION_base(4,10,0) +import Distribution.Compat.Prelude hiding (Applicative(..)) import Control.Applicative (Applicative (..)) +#else +import Distribution.Compat.Prelude #endif -- | A monad with failure and accumulating errors and warnings.