From c528eb24ca367ff5fee7835116630bc1f5aa893e Mon Sep 17 00:00:00 2001 From: Denis Redozubov Date: Tue, 1 Mar 2016 14:21:21 +0300 Subject: [PATCH 1/6] use base-compat --- servant/servant.cabal | 1 + servant/src/Servant/API/Alternative.hs | 7 ++----- servant/src/Servant/API/ContentTypes.hs | 8 +++----- servant/src/Servant/API/Internal/Test/ComprehensiveAPI.hs | 1 - servant/src/Servant/API/ResponseHeaders.hs | 4 +--- servant/src/Servant/Utils/Links.hs | 6 +----- stack-ghc-7.8.4.yaml | 1 + 7 files changed, 9 insertions(+), 19 deletions(-) diff --git a/servant/servant.cabal b/servant/servant.cabal index a66efbce..689fc0fb 100644 --- a/servant/servant.cabal +++ b/servant/servant.cabal @@ -47,6 +47,7 @@ library Servant.Utils.Links build-depends: base >=4.7 && <5 + , base-compat >= 0.8 , aeson >= 0.7 , attoparsec >= 0.12 , bytestring == 0.10.* diff --git a/servant/src/Servant/API/Alternative.hs b/servant/src/Servant/API/Alternative.hs index 752dcef0..144f8b48 100644 --- a/servant/src/Servant/API/Alternative.hs +++ b/servant/src/Servant/API/Alternative.hs @@ -9,12 +9,9 @@ {-# OPTIONS_HADDOCK not-home #-} module Servant.API.Alternative ((:<|>)(..)) where -#if !MIN_VERSION_base(4,8,0) -import Data.Monoid (Monoid (..)) -import Data.Traversable (Traversable) -import Data.Foldable (Foldable) -#endif import Data.Typeable (Typeable) +import Prelude.Compat (Monoid(..), Traversable, Foldable) + -- | Union of two APIs, first takes precedence in case of overlap. -- -- Example: diff --git a/servant/src/Servant/API/ContentTypes.hs b/servant/src/Servant/API/ContentTypes.hs index 61bf1ce9..1e0febdb 100644 --- a/servant/src/Servant/API/ContentTypes.hs +++ b/servant/src/Servant/API/ContentTypes.hs @@ -72,11 +72,8 @@ module Servant.API.ContentTypes , canHandleAcceptH ) where -#if !MIN_VERSION_base(4,8,0) -import Control.Applicative ((*>), (<*)) -#endif import Control.Arrow (left) -import Control.Monad +import Control.Monad.Compat hiding (mapM) import Data.Aeson (FromJSON(..), ToJSON(..), encode) import Data.Aeson.Parser (value) import Data.Aeson.Types (parseEither) @@ -88,7 +85,7 @@ import Data.ByteString.Lazy (ByteString, fromStrict, import qualified Data.ByteString.Lazy as B import qualified Data.ByteString.Lazy.Char8 as BC import Data.Maybe (isJust) -import Data.Monoid +import Data.Monoid.Compat import Data.String.Conversions (cs) import qualified Data.Text as TextS import qualified Data.Text.Encoding as TextS @@ -99,6 +96,7 @@ import GHC.Generics (Generic) import qualified Network.HTTP.Media as M import Network.URI (escapeURIString, isUnreserved, unEscapeString) +import Prelude.Compat ((<*), (*>)) -- * Provided content types data JSON deriving Typeable diff --git a/servant/src/Servant/API/Internal/Test/ComprehensiveAPI.hs b/servant/src/Servant/API/Internal/Test/ComprehensiveAPI.hs index 91d01727..22d69263 100644 --- a/servant/src/Servant/API/Internal/Test/ComprehensiveAPI.hs +++ b/servant/src/Servant/API/Internal/Test/ComprehensiveAPI.hs @@ -7,7 +7,6 @@ module Servant.API.Internal.Test.ComprehensiveAPI where import Data.Proxy - import Servant.API type GET = Get '[JSON] () diff --git a/servant/src/Servant/API/ResponseHeaders.hs b/servant/src/Servant/API/ResponseHeaders.hs index dc73a8e0..09d567a7 100644 --- a/servant/src/Servant/API/ResponseHeaders.hs +++ b/servant/src/Servant/API/ResponseHeaders.hs @@ -30,9 +30,6 @@ module Servant.API.ResponseHeaders , HList(..) ) where -#if !MIN_VERSION_base(4,8,0) -import Control.Applicative ((<$>)) -#endif import Data.ByteString.Char8 as BS (pack, unlines, init) import Data.ByteString.Conversion (ToByteString, toByteString', FromByteString, fromByteString) @@ -42,6 +39,7 @@ import GHC.TypeLits (KnownSymbol, symbolVal) import qualified Network.HTTP.Types.Header as HTTP import Servant.API.Header (Header (..)) +import Prelude.Compat -- | Response Header objects. You should never need to construct one directly. -- Instead, use 'addHeader'. diff --git a/servant/src/Servant/Utils/Links.hs b/servant/src/Servant/Utils/Links.hs index d83ffc7e..86085fa6 100644 --- a/servant/src/Servant/Utils/Links.hs +++ b/servant/src/Servant/Utils/Links.hs @@ -105,11 +105,7 @@ import Data.List import Data.Proxy ( Proxy(..) ) import qualified Data.Text as Text import qualified Data.ByteString.Char8 as BSC -#if !MIN_VERSION_base(4,8,0) -import Data.Monoid ( Monoid(..), (<>) ) -#else -import Data.Monoid ( (<>) ) -#endif +import Data.Monoid.Compat ( Monoid(..), (<>) ) import Network.URI ( URI(..), escapeURIString, isUnreserved ) import GHC.TypeLits ( KnownSymbol, symbolVal ) import GHC.Exts(Constraint) diff --git a/stack-ghc-7.8.4.yaml b/stack-ghc-7.8.4.yaml index 8aa461d7..679b2b52 100644 --- a/stack-ghc-7.8.4.yaml +++ b/stack-ghc-7.8.4.yaml @@ -12,6 +12,7 @@ packages: - servant-mock/ - servant-server/ extra-deps: +- base-compat-0.9.0 - hspec-2.2.0 - hspec-core-2.2.0 - hspec-discover-2.2.0 From c755f478067ec7f8e1cee352e59e36d743e90a75 Mon Sep 17 00:00:00 2001 From: Denis Redozubov Date: Tue, 1 Mar 2016 14:41:24 +0300 Subject: [PATCH 2/6] use base-compat in servant-server --- servant-server/servant-server.cabal | 1 + servant-server/src/Servant/Server/Internal.hs | 4 +--- servant-server/src/Servant/Server/Internal/Enter.hs | 5 ++--- .../src/Servant/Server/Internal/RoutingApplication.hs | 4 +--- servant/servant.cabal | 2 +- stack.yaml | 1 + 6 files changed, 7 insertions(+), 10 deletions(-) diff --git a/servant-server/servant-server.cabal b/servant-server/servant-server.cabal index 6167a2b4..a4609bd5 100644 --- a/servant-server/servant-server.cabal +++ b/servant-server/servant-server.cabal @@ -47,6 +47,7 @@ library Servant.Utils.StaticFiles build-depends: base >= 4.7 && < 5 + , base-compat >= 0.9 , aeson >= 0.7 && < 0.12 , attoparsec >= 0.12 && < 0.14 , base64-bytestring == 1.0.* diff --git a/servant-server/src/Servant/Server/Internal.hs b/servant-server/src/Servant/Server/Internal.hs index c170de9b..31c758b2 100644 --- a/servant-server/src/Servant/Server/Internal.hs +++ b/servant-server/src/Servant/Server/Internal.hs @@ -22,9 +22,6 @@ module Servant.Server.Internal , module Servant.Server.Internal.ServantErr ) where -#if !MIN_VERSION_base(4,8,0) -import Control.Applicative ((<$>)) -#endif import Control.Monad.Trans.Except (ExceptT) import qualified Data.ByteString as B import qualified Data.ByteString.Char8 as BC8 @@ -45,6 +42,7 @@ import Network.Wai (Application, Request, Response, rawQueryString, remoteHost, requestHeaders, requestMethod, responseLBS, vault) +import Prelude.Compat import Web.HttpApiData (FromHttpApiData) import Web.HttpApiData.Internal (parseHeaderMaybe, parseQueryParamMaybe, diff --git a/servant-server/src/Servant/Server/Internal/Enter.hs b/servant-server/src/Servant/Server/Internal/Enter.hs index 5bcebe9d..169a05b6 100644 --- a/servant-server/src/Servant/Server/Internal/Enter.hs +++ b/servant-server/src/Servant/Server/Internal/Enter.hs @@ -10,9 +10,6 @@ {-# LANGUAGE UndecidableInstances #-} module Servant.Server.Internal.Enter where -#if !MIN_VERSION_base(4,8,0) -import Control.Applicative -#endif import qualified Control.Category as C #if MIN_VERSION_mtl(2,2,1) import Control.Monad.Except @@ -25,6 +22,8 @@ import qualified Control.Monad.State.Strict as SState import qualified Control.Monad.Writer.Lazy as LWriter import qualified Control.Monad.Writer.Strict as SWriter import Data.Typeable +import Prelude.Compat + import Servant.API class Enter typ arg ret | typ arg -> ret, typ ret -> arg where diff --git a/servant-server/src/Servant/Server/Internal/RoutingApplication.hs b/servant-server/src/Servant/Server/Internal/RoutingApplication.hs index cd1ac019..e7a53c3c 100644 --- a/servant-server/src/Servant/Server/Internal/RoutingApplication.hs +++ b/servant-server/src/Servant/Server/Internal/RoutingApplication.hs @@ -8,12 +8,10 @@ {-# LANGUAGE StandaloneDeriving #-} module Servant.Server.Internal.RoutingApplication where -#if !MIN_VERSION_base(4,8,0) -import Control.Applicative ((<$>)) -#endif import Control.Monad.Trans.Except (ExceptT, runExceptT) import Network.Wai (Application, Request, Response, ResponseReceived) +import Prelude.Compat import Servant.Server.Internal.ServantErr type RoutingApplication = diff --git a/servant/servant.cabal b/servant/servant.cabal index 689fc0fb..849e3d05 100644 --- a/servant/servant.cabal +++ b/servant/servant.cabal @@ -47,7 +47,7 @@ library Servant.Utils.Links build-depends: base >=4.7 && <5 - , base-compat >= 0.8 + , base-compat >= 0.9 , aeson >= 0.7 , attoparsec >= 0.12 , bytestring == 0.10.* diff --git a/stack.yaml b/stack.yaml index c1aea0a2..adec1495 100644 --- a/stack.yaml +++ b/stack.yaml @@ -14,6 +14,7 @@ packages: - servant-mock/ - servant-server/ extra-deps: +- base-compat-0.9.0 - engine-io-wai-1.0.2 - control-monad-omega-0.3.1 - should-not-typecheck-2.0.1 From a22a9811903e5b8d0ff96bb1da9a91b2b912542a Mon Sep 17 00:00:00 2001 From: Denis Redozubov Date: Tue, 1 Mar 2016 21:25:04 +0300 Subject: [PATCH 3/6] update base-compat imports --- servant-server/src/Servant/Server/Internal.hs | 1 + servant-server/src/Servant/Server/Internal/Enter.hs | 1 + .../src/Servant/Server/Internal/RoutingApplication.hs | 1 + servant/src/Servant/API/Alternative.hs | 3 ++- servant/src/Servant/API/ContentTypes.hs | 5 +++-- servant/src/Servant/API/ResponseHeaders.hs | 1 + 6 files changed, 9 insertions(+), 3 deletions(-) diff --git a/servant-server/src/Servant/Server/Internal.hs b/servant-server/src/Servant/Server/Internal.hs index 31c758b2..c9679d9e 100644 --- a/servant-server/src/Servant/Server/Internal.hs +++ b/servant-server/src/Servant/Server/Internal.hs @@ -42,6 +42,7 @@ import Network.Wai (Application, Request, Response, rawQueryString, remoteHost, requestHeaders, requestMethod, responseLBS, vault) +import Prelude () import Prelude.Compat import Web.HttpApiData (FromHttpApiData) import Web.HttpApiData.Internal (parseHeaderMaybe, diff --git a/servant-server/src/Servant/Server/Internal/Enter.hs b/servant-server/src/Servant/Server/Internal/Enter.hs index 169a05b6..f1c88b2e 100644 --- a/servant-server/src/Servant/Server/Internal/Enter.hs +++ b/servant-server/src/Servant/Server/Internal/Enter.hs @@ -22,6 +22,7 @@ import qualified Control.Monad.State.Strict as SState import qualified Control.Monad.Writer.Lazy as LWriter import qualified Control.Monad.Writer.Strict as SWriter import Data.Typeable +import Prelude () import Prelude.Compat import Servant.API diff --git a/servant-server/src/Servant/Server/Internal/RoutingApplication.hs b/servant-server/src/Servant/Server/Internal/RoutingApplication.hs index e7a53c3c..7d0c4341 100644 --- a/servant-server/src/Servant/Server/Internal/RoutingApplication.hs +++ b/servant-server/src/Servant/Server/Internal/RoutingApplication.hs @@ -11,6 +11,7 @@ module Servant.Server.Internal.RoutingApplication where import Control.Monad.Trans.Except (ExceptT, runExceptT) import Network.Wai (Application, Request, Response, ResponseReceived) +import Prelude () import Prelude.Compat import Servant.Server.Internal.ServantErr diff --git a/servant/src/Servant/API/Alternative.hs b/servant/src/Servant/API/Alternative.hs index 144f8b48..a7651d3c 100644 --- a/servant/src/Servant/API/Alternative.hs +++ b/servant/src/Servant/API/Alternative.hs @@ -10,7 +10,8 @@ module Servant.API.Alternative ((:<|>)(..)) where import Data.Typeable (Typeable) -import Prelude.Compat (Monoid(..), Traversable, Foldable) +import Prelude () +import Prelude.Compat -- | Union of two APIs, first takes precedence in case of overlap. -- diff --git a/servant/src/Servant/API/ContentTypes.hs b/servant/src/Servant/API/ContentTypes.hs index 1e0febdb..6ca29330 100644 --- a/servant/src/Servant/API/ContentTypes.hs +++ b/servant/src/Servant/API/ContentTypes.hs @@ -73,7 +73,7 @@ module Servant.API.ContentTypes ) where import Control.Arrow (left) -import Control.Monad.Compat hiding (mapM) +import Control.Monad.Compat import Data.Aeson (FromJSON(..), ToJSON(..), encode) import Data.Aeson.Parser (value) import Data.Aeson.Types (parseEither) @@ -96,7 +96,8 @@ import GHC.Generics (Generic) import qualified Network.HTTP.Media as M import Network.URI (escapeURIString, isUnreserved, unEscapeString) -import Prelude.Compat ((<*), (*>)) +import Prelude () +import Prelude.Compat -- * Provided content types data JSON deriving Typeable diff --git a/servant/src/Servant/API/ResponseHeaders.hs b/servant/src/Servant/API/ResponseHeaders.hs index 09d567a7..cde14938 100644 --- a/servant/src/Servant/API/ResponseHeaders.hs +++ b/servant/src/Servant/API/ResponseHeaders.hs @@ -39,6 +39,7 @@ import GHC.TypeLits (KnownSymbol, symbolVal) import qualified Network.HTTP.Types.Header as HTTP import Servant.API.Header (Header (..)) +import Prelude () import Prelude.Compat -- | Response Header objects. You should never need to construct one directly. From 7484780013cc1c57eb899f641392ff65dc51a96d Mon Sep 17 00:00:00 2001 From: Denis Redozubov Date: Thu, 3 Mar 2016 12:45:08 +0300 Subject: [PATCH 4/6] import only (<>) from Data.Monoid --- servant/src/Servant/Utils/Links.hs | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/servant/src/Servant/Utils/Links.hs b/servant/src/Servant/Utils/Links.hs index 86085fa6..1ada7c93 100644 --- a/servant/src/Servant/Utils/Links.hs +++ b/servant/src/Servant/Utils/Links.hs @@ -101,14 +101,16 @@ module Servant.Utils.Links ( , Or ) where -import Data.List -import Data.Proxy ( Proxy(..) ) -import qualified Data.Text as Text import qualified Data.ByteString.Char8 as BSC -import Data.Monoid.Compat ( Monoid(..), (<>) ) -import Network.URI ( URI(..), escapeURIString, isUnreserved ) -import GHC.TypeLits ( KnownSymbol, symbolVal ) -import GHC.Exts(Constraint) +import Data.List +import Data.Monoid.Compat ( (<>) ) +import Data.Proxy ( Proxy(..) ) +import qualified Data.Text as Text +import GHC.Exts (Constraint) +import GHC.TypeLits ( KnownSymbol, symbolVal ) +import Network.URI ( URI(..), escapeURIString, isUnreserved ) +import Prelude () +import Prelude.Compat import Web.HttpApiData import Servant.API.Capture ( Capture ) From 54273878b959a07f42f49b75b1d9c0ce3e37fbd4 Mon Sep 17 00:00:00 2001 From: Denis Redozubov Date: Sat, 12 Mar 2016 12:21:41 +0300 Subject: [PATCH 5/6] little improvements --- servant/src/Servant/API/Internal/Test/ComprehensiveAPI.hs | 1 + 1 file changed, 1 insertion(+) diff --git a/servant/src/Servant/API/Internal/Test/ComprehensiveAPI.hs b/servant/src/Servant/API/Internal/Test/ComprehensiveAPI.hs index 22d69263..91d01727 100644 --- a/servant/src/Servant/API/Internal/Test/ComprehensiveAPI.hs +++ b/servant/src/Servant/API/Internal/Test/ComprehensiveAPI.hs @@ -7,6 +7,7 @@ module Servant.API.Internal.Test.ComprehensiveAPI where import Data.Proxy + import Servant.API type GET = Get '[JSON] () From 460a0c90b49294386b9b7ea6e7c80bff6b78e3de Mon Sep 17 00:00:00 2001 From: Denis Redozubov Date: Sat, 12 Mar 2016 12:45:04 +0300 Subject: [PATCH 6/6] more purging --- servant-js/servant-js.cabal | 2 ++ servant-js/test/Servant/JSSpec.hs | 11 +++++------ servant/src/Servant/Utils/Links.hs | 1 - 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/servant-js/servant-js.cabal b/servant-js/servant-js.cabal index 792fda22..adbed88d 100644 --- a/servant-js/servant-js.cabal +++ b/servant-js/servant-js.cabal @@ -42,6 +42,7 @@ library Servant.JS.JQuery Servant.JS.Vanilla build-depends: base >= 4.5 && <5 + , base-compat >= 0.9 , charset >= 0.3 , lens >= 4 , servant-foreign == 0.5.* @@ -83,6 +84,7 @@ test-suite spec Servant.JSSpec Servant.JSSpec.CustomHeaders build-depends: base + , base-compat , hspec >= 2.1.8 , hspec-expectations , language-ecmascript >= 0.16 diff --git a/servant-js/test/Servant/JSSpec.hs b/servant-js/test/Servant/JSSpec.hs index 371d39db..ee3ff0a2 100644 --- a/servant-js/test/Servant/JSSpec.hs +++ b/servant-js/test/Servant/JSSpec.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE QuasiQuotes #-} @@ -7,18 +6,18 @@ {-# LANGUAGE TypeOperators #-} {-# LANGUAGE OverloadedStrings #-} {-# OPTIONS_GHC -fno-warn-orphans #-} + module Servant.JSSpec where import Data.Either (isRight) -#if !MIN_VERSION_base(4,8,0) -import Data.Monoid ((<>),mconcat) -#else -import Data.Monoid ((<>)) -#endif +import Data.Monoid () +import Data.Monoid.Compat ((<>)) import Data.Proxy import Data.Text (Text) import qualified Data.Text as T import Language.ECMAScript3.Parser (program, parse) +import Prelude () +import Prelude.Compat import Test.Hspec hiding (shouldContain, shouldNotContain) import Servant.API.Internal.Test.ComprehensiveAPI diff --git a/servant/src/Servant/Utils/Links.hs b/servant/src/Servant/Utils/Links.hs index 1ada7c93..2fb7d0a5 100644 --- a/servant/src/Servant/Utils/Links.hs +++ b/servant/src/Servant/Utils/Links.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleInstances #-}