From 27c430f39a759cf1a95005cd3f7737f7697a5207 Mon Sep 17 00:00:00 2001 From: David Binder <david.binder@uni-tuebingen.de> Date: Tue, 21 May 2024 02:00:49 +0200 Subject: [PATCH] haddock: Remove compatibility shims for GHC < 8.4 from haddock-library --- .../haddock-library/haddock-library.cabal | 19 +++---- .../haddock-library/src/CompatPrelude.hs | 52 ------------------- .../Haddock/Parser/Identifier.hs | 3 +- .../src/Documentation/Haddock/Parser/Monad.hs | 3 +- .../src/Documentation/Haddock/Types.hs | 31 ++--------- utils/haddock/haddock.cabal | 1 - 6 files changed, 12 insertions(+), 97 deletions(-) delete mode 100644 utils/haddock/haddock-library/src/CompatPrelude.hs diff --git a/utils/haddock/haddock-library/haddock-library.cabal b/utils/haddock/haddock-library/haddock-library.cabal index 648cdd7c0942..dc9c32b3a0b2 100644 --- a/utils/haddock/haddock-library/haddock-library.cabal +++ b/utils/haddock/haddock-library/haddock-library.cabal @@ -17,13 +17,7 @@ maintainer: Alec Theriault <alec.theriault@gmail.com>, Alex Biehl <ale homepage: http://www.haskell.org/haddock/ bug-reports: https://github.com/haskell/haddock/issues category: Documentation -tested-with: GHC == 7.4.2 - , GHC == 7.6.3 - , GHC == 7.8.4 - , GHC == 7.10.3 - , GHC == 8.0.2 - , GHC == 8.2.2 - , GHC == 8.4.4 +tested-with: GHC == 8.4.4 , GHC == 8.6.5 , GHC == 8.8.3 , GHC == 8.10.1 @@ -41,14 +35,15 @@ common lib-defaults default-language: Haskell2010 build-depends: - , base >= 4.5 && < 4.20 + , base >= 4.10 && < 4.20 , containers ^>= 0.4.2.1 || ^>= 0.5.0.0 || ^>= 0.6.0.1 || ^>= 0.7 , text ^>= 1.2.3.0 || ^>= 2.0 || ^>= 2.1 , parsec ^>= 3.1.13.0 - ghc-options: -funbox-strict-fields -Wall - if impl(ghc >= 8.0) - ghc-options: -Wcompat -Wnoncanonical-monad-instances + ghc-options: -funbox-strict-fields + -Wall + -Wcompat + -Wnoncanonical-monad-instances library import: lib-defaults @@ -62,7 +57,6 @@ library Documentation.Haddock.Types other-modules: - CompatPrelude Documentation.Haddock.Parser.Util Documentation.Haddock.Parser.Monad Documentation.Haddock.Parser.Identifier @@ -76,7 +70,6 @@ test-suite spec src other-modules: - CompatPrelude Documentation.Haddock.Doc Documentation.Haddock.Markup Documentation.Haddock.Parser diff --git a/utils/haddock/haddock-library/src/CompatPrelude.hs b/utils/haddock/haddock-library/src/CompatPrelude.hs deleted file mode 100644 index 0a98d485adda..000000000000 --- a/utils/haddock/haddock-library/src/CompatPrelude.hs +++ /dev/null @@ -1,52 +0,0 @@ -{-# LANGUAGE CPP #-} - -#ifdef __HLINT__ -#elif !MIN_VERSION_base(4,5,0) -# error This module doesn't provide compat-shims for versions prior to base-4.5 -#endif - --- | Bridge impedance mismatch of different @base@ versions back till @base-4.5@ (GHC 7.4.2) -module CompatPrelude - ( ($>) - , isSymbolChar - ) where - -#if MIN_VERSION_base(4,7,0) -import Data.Functor ( ($>) ) -#else -import Data.Functor ( (<$) ) -#endif - -#if MIN_VERSION_base(4,9,0) -import Text.Read.Lex (isSymbolChar) -#else -import Data.Char (GeneralCategory(..), generalCategory) -#endif - -#if !MIN_VERSION_base(4,7,0) -infixl 4 $> - --- | Flipped version of '<$'. --- --- @since 4.7.0.0 -($>) :: Functor f => f a -> b -> f b -($>) = flip (<$) -#endif - -#if !MIN_VERSION_base(4,9,0) --- inlined from base-4.10.0.0 -isSymbolChar :: Char -> Bool -isSymbolChar c = not (isPuncChar c) && case generalCategory c of - MathSymbol -> True - CurrencySymbol -> True - ModifierSymbol -> True - OtherSymbol -> True - DashPunctuation -> True - OtherPunctuation -> c `notElem` "'\"" - ConnectorPunctuation -> c /= '_' - _ -> False - where - -- | The @special@ character class as defined in the Haskell Report. - isPuncChar :: Char -> Bool - isPuncChar = (`elem` (",;()[]{}`" :: String)) -#endif diff --git a/utils/haddock/haddock-library/src/Documentation/Haddock/Parser/Identifier.hs b/utils/haddock/haddock-library/src/Documentation/Haddock/Parser/Identifier.hs index 6ed3d040198a..da4f70de675d 100644 --- a/utils/haddock/haddock-library/src/Documentation/Haddock/Parser/Identifier.hs +++ b/utils/haddock/haddock-library/src/Documentation/Haddock/Parser/Identifier.hs @@ -24,11 +24,12 @@ import Text.Parsec ) import qualified Text.Parsec as Parsec import Text.Parsec.Pos (updatePosChar) +import Text.Read.Lex (isSymbolChar) +import Data.Functor (($>)) import Data.Text (Text) import qualified Data.Text as T -import CompatPrelude import Control.Monad (guard) import Data.Char (isAlpha, isAlphaNum) import Data.Maybe diff --git a/utils/haddock/haddock-library/src/Documentation/Haddock/Parser/Monad.hs b/utils/haddock/haddock-library/src/Documentation/Haddock/Parser/Monad.hs index 344360cf36d4..556e92b693fd 100644 --- a/utils/haddock/haddock-library/src/Documentation/Haddock/Parser/Monad.hs +++ b/utils/haddock/haddock-library/src/Documentation/Haddock/Parser/Monad.hs @@ -24,9 +24,9 @@ import Text.Parsec , setParserState ) import qualified Text.Parsec as Parsec -import qualified Text.Parsec.Char as Parsec import Text.Parsec.Pos (updatePosChar) +import Data.Functor (($>)) import Data.Text (Text) import qualified Data.Text as T @@ -39,7 +39,6 @@ import Data.String (IsString (..)) import Documentation.Haddock.Types (MetaSince (..)) -import CompatPrelude import Prelude hiding (takeWhile) -- | The only bit of information we really care about trudging along with us diff --git a/utils/haddock/haddock-library/src/Documentation/Haddock/Types.hs b/utils/haddock/haddock-library/src/Documentation/Haddock/Types.hs index 424e7f86ca0e..83cacc327766 100644 --- a/utils/haddock/haddock-library/src/Documentation/Haddock/Types.hs +++ b/utils/haddock/haddock-library/src/Documentation/Haddock/Types.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE DeriveTraversable #-} -- | @@ -15,21 +14,10 @@ -- Exposes documentation data types used for (some) of Haddock. module Documentation.Haddock.Types where -#if !MIN_VERSION_base(4,8,0) -import Control.Applicative -import Data.Foldable -import Data.Traversable -#endif - -#if MIN_VERSION_base(4,8,0) import Control.Arrow ((***)) -import Data.Bifunctor -#endif - -#if MIN_VERSION_base(4,10,0) import Data.Bifoldable +import Data.Bifunctor import Data.Bitraversable -#endif -- | A @\@since@ declaration. data MetaSince = MetaSince @@ -54,21 +42,14 @@ data MetaDoc mod id = MetaDoc } deriving (Eq, Show, Functor, Foldable, Traversable) -#if MIN_VERSION_base(4,8,0) --- | __NOTE__: Only defined for @base >= 4.8.0@ instance Bifunctor MetaDoc where bimap f g (MetaDoc m d) = MetaDoc m (bimap f g d) -#endif -#if MIN_VERSION_base(4,10,0) --- | __NOTE__: Only defined for @base >= 4.10.0@ instance Bifoldable MetaDoc where bifoldr f g z d = bifoldr f g z (_doc d) --- | __NOTE__: Only defined for @base >= 4.10.0@ instance Bitraversable MetaDoc where bitraverse f g (MetaDoc m d) = MetaDoc m <$> bitraverse f g d -#endif overDoc :: (DocH a b -> DocH c d) -> MetaDoc a b -> MetaDoc c d overDoc f d = d{_doc = f $ _doc d} @@ -159,8 +140,6 @@ data DocH mod id | DocTable (Table (DocH mod id)) deriving (Eq, Show, Functor, Foldable, Traversable) -#if MIN_VERSION_base(4,8,0) --- | __NOTE__: Only defined for @base >= 4.8.0@ instance Bifunctor DocH where bimap _ _ DocEmpty = DocEmpty bimap f g (DocAppend docA docB) = DocAppend (bimap f g docA) (bimap f g docB) @@ -186,10 +165,7 @@ instance Bifunctor DocH where bimap _ _ (DocExamples examples) = DocExamples examples bimap f g (DocHeader (Header level title)) = DocHeader (Header level (bimap f g title)) bimap f g (DocTable (Table header body)) = DocTable (Table (map (fmap (bimap f g)) header) (map (fmap (bimap f g)) body)) -#endif -#if MIN_VERSION_base(4,10,0) --- | __NOTE__: Only defined for @base >= 4.10.0@ instance Bifoldable DocH where bifoldr f g z (DocAppend docA docB) = bifoldr f g (bifoldr f g z docA) docB bifoldr f g z (DocParagraph doc) = bifoldr f g z doc @@ -207,7 +183,6 @@ instance Bifoldable DocH where bifoldr f g z (DocTable (Table header body)) = foldr (\r acc -> foldr (flip (bifoldr f g)) acc r) (foldr (\r acc -> foldr (flip (bifoldr f g)) acc r) z body) header bifoldr _ _ z _ = z --- | __NOTE__: Only defined for @base >= 4.10.0@ instance Bitraversable DocH where bitraverse _ _ DocEmpty = pure DocEmpty bitraverse f g (DocAppend docA docB) = DocAppend <$> bitraverse f g docA <*> bitraverse f g docB @@ -222,7 +197,8 @@ instance Bitraversable DocH where bitraverse f g (DocBold doc) = DocBold <$> bitraverse f g doc bitraverse f g (DocUnorderedList docs) = DocUnorderedList <$> traverse (bitraverse f g) docs bitraverse f g (DocOrderedList docs) = DocOrderedList <$> traverseSnd (bitraverse f g) docs - where traverseSnd f' = traverse (\(x, a) -> (\b -> (x, b)) <$> f' a) + where + traverseSnd f' = traverse (\(x, a) -> (\b -> (x, b)) <$> f' a) bitraverse f g (DocDefList docs) = DocDefList <$> traverse (bitraverse (bitraverse f g) (bitraverse f g)) docs bitraverse f g (DocCodeBlock doc) = DocCodeBlock <$> bitraverse f g doc bitraverse f g (DocHyperlink (Hyperlink url lbl)) = DocHyperlink <$> (Hyperlink url <$> traverse (bitraverse f g) lbl) @@ -234,7 +210,6 @@ instance Bitraversable DocH where bitraverse _ _ (DocExamples examples) = pure (DocExamples examples) bitraverse f g (DocHeader (Header level title)) = (DocHeader . Header level) <$> bitraverse f g title bitraverse f g (DocTable (Table header body)) = (\h b -> DocTable (Table h b)) <$> traverse (traverse (bitraverse f g)) header <*> traverse (traverse (bitraverse f g)) body -#endif -- | The namespace qualification for an identifier. data Namespace = Value | Type | None deriving (Eq, Ord, Enum, Show) diff --git a/utils/haddock/haddock.cabal b/utils/haddock/haddock.cabal index b6ec40f95d6d..e1b44627f72d 100644 --- a/utils/haddock/haddock.cabal +++ b/utils/haddock/haddock.cabal @@ -91,7 +91,6 @@ executable haddock mtl other-modules: - CompatPrelude Documentation.Haddock.Parser Documentation.Haddock.Parser.Monad Documentation.Haddock.Parser.Identifier -- GitLab