From 4c730f58ad4d1019568a2adc3933b9af0954c8c6 Mon Sep 17 00:00:00 2001 From: Herbert Valerio Riedel <hvr@gnu.org> Date: Mon, 26 Sep 2016 00:05:46 +0200 Subject: [PATCH] Introduce `Distribution.Compat.Prelude.Internal` + WARNING MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This unexposes `Distribution.Compat.Prelude` again, and adds an exposed `.Internal` module which reexports the `.Prelude` module with an attached module-level `WARNING` pragma. This way users are discouraged to use this in `Setup.hs` files as they'd see compile warning like: Foo.hs:19:1-55: warning: [-Wdeprecations] Module ‘Distribution.Compat.Prelude.Internal’: This modules' API is not stable. Use at your own risk, or better yet, use @base-compat@! In `cabal-install` we import the `.Internal` module exactly once, and use -Wno-deprecations to suppress that the warning of that single import. --- Cabal/Cabal.cabal | 3 ++- Cabal/Distribution/Compat/Prelude/Internal.hs | 14 ++++++++++++++ .../Distribution/Client/Compat/Prelude.hs | 7 +++++-- 3 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 Cabal/Distribution/Compat/Prelude/Internal.hs diff --git a/Cabal/Cabal.cabal b/Cabal/Cabal.cabal index 6722545d13..2a0f4aef37 100644 --- a/Cabal/Cabal.cabal +++ b/Cabal/Cabal.cabal @@ -315,7 +315,7 @@ library Distribution.Compat.Exception Distribution.Compat.Graph Distribution.Compat.Internal.TempFile - Distribution.Compat.Prelude + Distribution.Compat.Prelude.Internal Distribution.Compat.ReadP Distribution.Compat.Semigroup Distribution.Compat.Stack @@ -419,6 +419,7 @@ library Distribution.Compat.CopyFile Distribution.Compat.GetShortPathName Distribution.Compat.MonadFail + Distribution.Compat.Prelude Distribution.GetOpt Distribution.Lex Distribution.Simple.GHC.Internal diff --git a/Cabal/Distribution/Compat/Prelude/Internal.hs b/Cabal/Distribution/Compat/Prelude/Internal.hs new file mode 100644 index 0000000000..b3f998d331 --- /dev/null +++ b/Cabal/Distribution/Compat/Prelude/Internal.hs @@ -0,0 +1,14 @@ +-- | This module re-exports the non-exposed +-- "Distribution.Compat.Prelude" module for +-- reuse by @cabal-install@'s +-- "Distribution.Client.Compat.Prelude" module. +-- +-- It is highly discouraged to rely on this module +-- for @Setup.hs@ scripts since its API is /not/ +-- stable. +module Distribution.Compat.Prelude.Internal + {-# WARNING "This modules' API is not stable. Use at your own risk, or better yet, use @base-compat@!" #-} + ( module Distribution.Compat.Prelude + ) where + +import Distribution.Compat.Prelude diff --git a/cabal-install/Distribution/Client/Compat/Prelude.hs b/cabal-install/Distribution/Client/Compat/Prelude.hs index 6b7413035a..1b233af4e4 100644 --- a/cabal-install/Distribution/Client/Compat/Prelude.hs +++ b/cabal-install/Distribution/Client/Compat/Prelude.hs @@ -1,5 +1,8 @@ {-# LANGUAGE CPP #-} +-- to suppress WARNING in "Distribution.Compat.Prelude.Internal" +{-# OPTIONS_GHC -fno-warn-deprecations #-} + -- | This module does two things: -- -- * Acts as a compatiblity layer, like @base-compat@. @@ -10,13 +13,13 @@ -- this module re-exports) -- module Distribution.Client.Compat.Prelude - ( module Distribution.Compat.Prelude + ( module Distribution.Compat.Prelude.Internal , Prelude.IO , readMaybe ) where import Prelude (IO) -import Distribution.Compat.Prelude hiding (IO) +import Distribution.Compat.Prelude.Internal hiding (IO) #if MIN_VERSION_base(4,6,0) import Text.Read -- GitLab