First stab at mtl 2.3 compliance.

This will no doubt produce a bunch of warnings and hence CI
failures, which we'll need to work around with explicit imports.
This commit is contained in:
John MacFarlane
2022-10-31 16:51:51 -07:00
parent 3e48d9701d
commit df36019768
41 changed files with 78 additions and 22 deletions
+5
View File
@@ -70,6 +70,11 @@ jobs:
cabal: '3.8'
cabalopts: ''
testopts: '--test-option=--hide-successes --test-option=--ansi-tricks=false'
- ghc: '9.4.2'
cabal: '3.8'
cabalopts: '--allow-newer --constrain "mtl >= 2.3.1"'
testopts: '--test-option=--hide-successes --test-option=--ansi-tricks=false'
steps:
- uses: actions/checkout@v3
+3 -3
View File
@@ -496,7 +496,7 @@ library
ipynb >= 0.2 && < 0.3,
jira-wiki-markup >= 1.4 && < 1.5,
mime-types >= 0.1.1 && < 0.2,
mtl >= 2.2 && < 2.3,
mtl >= 2.2 && < 2.4,
network >= 2.6,
network-uri >= 2.6 && < 2.8,
pandoc-types >= 1.22.2 && < 1.23,
@@ -750,7 +750,7 @@ test-suite test-pandoc
directory >= 1.2.3 && < 1.4,
doctemplates >= 0.10 && < 0.11,
filepath >= 1.1 && < 1.5,
mtl >= 2.2 && < 2.3,
mtl >= 2.2 && < 2.4,
pandoc-types >= 1.22.2 && < 1.23,
process >= 1.2.3 && < 1.7,
tasty >= 0.11 && < 1.5,
@@ -824,7 +824,7 @@ benchmark benchmark-pandoc
hs-source-dirs: benchmark
build-depends: bytestring,
tasty-bench >= 0.2 && <= 0.4,
mtl >= 2.2 && < 2.3,
mtl >= 2.2 && < 2.4,
text >= 1.1.1.0 && < 2.1,
deepseq
-- we increase heap size to avoid benchmarking garbage collection:
+3 -1
View File
@@ -25,7 +25,9 @@ module Text.Pandoc.App.Opt (
, applyDefaults
, fullDefaultsPath
) where
import Control.Monad.Except (MonadIO, liftIO, throwError, (>=>), foldM)
import Control.Monad.Except (throwError)
import Control.Monad.Trans (MonadIO, liftIO)
import Control.Monad ((>=>), foldM)
import Control.Monad.State.Strict (StateT, modify, gets)
import System.FilePath ( addExtension, (</>), takeExtension, takeDirectory )
import System.Directory ( canonicalizePath )
+2 -1
View File
@@ -46,7 +46,8 @@ import qualified Data.Map as Map
import Data.Maybe
import Text.Pandoc.Parsing hiding ((<|>), many)
import Control.Applicative
import Control.Monad.RWS hiding ((<>))
import Control.Monad ( guard, MonadPlus(..), void )
import Control.Monad.RWS ( asks, RWST, gets, modify, evalRWST )
import qualified Data.Sequence as Seq
import Data.Char (isAlphaNum, isDigit, isLetter,
isUpper, toLower, toUpper,
+1 -2
View File
@@ -29,7 +29,6 @@ import Citeproc.Pandoc ()
import Text.Pandoc.Citeproc.Util (splitStrWhen)
import qualified Data.Text as T
import Data.List.Split (splitWhen, wordsBy)
import Control.Monad.RWS hiding ((<>))
import Data.Char (isUpper, isDigit)
import Data.List (foldl')
@@ -59,7 +58,7 @@ data NameOpts =
-- | Parse a list of 'Inline's into a citeproc 'Name', identifying
-- first and last name, particles, suffixes.
toName :: MonadPlus m => NameOpts -> [Inline] -> m Name
toName :: Monad m => NameOpts -> [Inline] -> m Name
toName _ [Str "others"] =
return emptyName{ nameLiteral = Just "others" }
toName _ [Span ("",[],[]) ils] = -- corporate author
+3 -2
View File
@@ -54,8 +54,9 @@ module Text.Pandoc.Class.PandocMonad
, checkUserDataDir
) where
import Control.Monad.Except (MonadError (catchError, throwError),
MonadTrans, lift, when)
import Control.Monad.Except (MonadError (catchError, throwError))
import Control.Monad.Trans (MonadTrans, lift)
import Control.Monad (when)
import Data.Time (UTCTime)
import Data.Time.Clock.POSIX (POSIXTime, utcTimeToPOSIXSeconds,
posixSecondsToUTCTime)
+1
View File
@@ -31,6 +31,7 @@ module Text.Pandoc.Class.PandocPure
import Codec.Archive.Zip
import Control.Monad.Except
import Control.Monad.State.Strict
import Control.Monad (foldM)
import Data.Default
import Data.Text (Text)
import Data.Time (UTCTime)
+2 -1
View File
@@ -67,9 +67,10 @@ import Control.Monad
, unless
, void
, when
, MonadPlus(mzero)
)
import Control.Monad.Except ( MonadError(throwError) )
import Control.Monad.Identity ( Identity(..), MonadPlus(mzero) )
import Control.Monad.Identity ( Identity(..) )
import Data.Char
( chr
, isAlphaNum
+1
View File
@@ -26,6 +26,7 @@ import Text.Pandoc.Definition
import Text.Pandoc.Builder as B
import Text.Pandoc.Options
import Text.Pandoc.Readers.Metadata (yamlMetaBlock)
import Control.Monad (MonadPlus(mzero))
import Control.Monad.Except
import Data.Functor.Identity (runIdentity)
import Data.Typeable
+2 -1
View File
@@ -13,7 +13,8 @@ Conversion of creole text to 'Pandoc' document.
module Text.Pandoc.Readers.Creole ( readCreole
) where
import Control.Monad.Except (guard, liftM2, throwError)
import Control.Monad
import Control.Monad.Except (throwError)
import qualified Data.Foldable as F
import Data.Maybe (fromMaybe)
import Data.Text (Text)
+6
View File
@@ -13,7 +13,13 @@
Conversion of DocBook XML to 'Pandoc' document.
-}
module Text.Pandoc.Readers.DocBook ( readDocBook ) where
import Control.Monad (MonadPlus(mplus))
import Control.Monad.State.Strict
( MonadTrans(lift),
StateT(runStateT),
MonadState(get),
gets,
modify )
import Data.ByteString (ByteString)
import Data.FileEmbed
import Data.Char (isSpace, isLetter, chr)
+1
View File
@@ -59,6 +59,7 @@ module Text.Pandoc.Readers.Docx
) where
import Codec.Archive.Zip
import Control.Monad ( liftM, unless )
import Control.Monad.Reader
import Control.Monad.State.Strict
import Data.Bifunctor (bimap, first)
+1
View File
@@ -60,6 +60,7 @@ module Text.Pandoc.Readers.Docx.Parse ( Docx(..)
import Text.Pandoc.Readers.Docx.Parse.Styles
import Codec.Archive.Zip
import Control.Applicative ((<|>))
import Control.Monad
import Control.Monad.Except
import Control.Monad.Reader
import Control.Monad.State.Strict
+2 -1
View File
@@ -14,7 +14,8 @@ Conversion of JATS XML to 'Pandoc' document.
-}
module Text.Pandoc.Readers.JATS ( readJATS ) where
import Control.Monad.State.Strict
import Control.Monad.State.Strict ( StateT(runStateT), gets, modify )
import Control.Monad (forM_, when, unless, MonadPlus(mplus))
import Control.Monad.Except (throwError)
import Text.Pandoc.Error (PandocError(..))
import Data.Char (isDigit, isSpace)
@@ -42,7 +42,6 @@ module Text.Pandoc.Writers.AnnotatedTable
where
import Control.Monad.RWS.Strict
hiding ( (<>) )
import Data.Generics ( Data
, Typeable
)
+1
View File
@@ -19,6 +19,7 @@ that it has omitted the construct.
AsciiDoc: <http://www.methods.co.nz/asciidoc/>
-}
module Text.Pandoc.Writers.AsciiDoc (writeAsciiDoc, writeAsciiDoctor) where
import Control.Monad (foldM)
import Control.Monad.State.Strict
import Data.Char (isPunctuation, isSpace)
import Data.List (delete, intercalate, intersperse)
+2
View File
@@ -14,7 +14,9 @@
Conversion of 'Pandoc' format into ConTeXt.
-}
module Text.Pandoc.Writers.ConTeXt ( writeConTeXt ) where
import Control.Monad (liftM)
import Control.Monad.State.Strict
( StateT, MonadState(put, get), gets, modify, evalStateT )
import Data.Char (ord, isDigit)
import Data.List (intersperse)
import Data.List.NonEmpty (NonEmpty ((:|)))
+1
View File
@@ -19,6 +19,7 @@ Conversion of 'Pandoc' documents to docx.
module Text.Pandoc.Writers.Docx ( writeDocx ) where
import Codec.Archive.Zip
import Control.Applicative ((<|>))
import Control.Monad (MonadPlus(mplus), unless, when)
import Control.Monad.Except (catchError, throwError)
import Control.Monad.Reader
import Control.Monad.State.Strict
+2 -1
View File
@@ -13,7 +13,8 @@ module Text.Pandoc.Writers.Docx.Table
( tableToOpenXML
) where
import Control.Monad.State.Strict ( modify, gets, unless )
import Control.Monad.State.Strict ( modify, gets )
import Control.Monad ( unless )
import Data.Array ( elems, (!), assocs, indices )
import Data.Text (Text)
import Text.Pandoc.Definition
+2 -2
View File
@@ -18,9 +18,9 @@ FictionBook is an XML-based e-book format. For more information see:
-}
module Text.Pandoc.Writers.FB2 (writeFB2) where
import Control.Monad (zipWithM)
import Control.Monad (zipWithM, liftM)
import Control.Monad.Except (catchError, throwError)
import Control.Monad.State.Strict (StateT, evalStateT, get, gets, lift, liftM, modify)
import Control.Monad.State.Strict (StateT, evalStateT, get, gets, lift, modify)
import Data.ByteString.Base64 (encodeBase64)
import Data.Char (isAscii, isControl, isSpace)
import Data.Either (lefts, rights)
+3
View File
@@ -30,6 +30,9 @@ module Text.Pandoc.Writers.HTML (
tagWithAttributes
) where
import Control.Monad.State.Strict
( StateT, MonadState(get), gets, modify, evalStateT )
import Control.Monad ( liftM, when, foldM, unless )
import Control.Monad.Trans ( MonadTrans(lift) )
import Data.Char (ord)
import Data.List (intercalate, intersperse, partition, delete, (\\), foldl')
import Data.List.NonEmpty (NonEmpty((:|)))
+1
View File
@@ -14,6 +14,7 @@ Conversion of 'Pandoc' documents to haddock markup.
Haddock: <http://www.haskell.org/haddock/doc/html/>
-}
module Text.Pandoc.Writers.Haddock (writeHaddock) where
import Control.Monad (zipWithM)
import Control.Monad.State.Strict
import Data.Char (isAlphaNum)
import Data.Default
+1
View File
@@ -17,6 +17,7 @@ into InDesign with File -> Place.
-}
module Text.Pandoc.Writers.ICML (writeICML) where
import Control.Monad.Except (catchError)
import Control.Monad (liftM2)
import Control.Monad.State.Strict
import Data.List (intersperse)
import Data.Maybe (fromMaybe, maybeToList)
+1
View File
@@ -14,6 +14,7 @@ Ipynb (Jupyter notebook JSON format) writer for pandoc.
-}
module Text.Pandoc.Writers.Ipynb ( writeIpynb )
where
import Control.Monad (foldM)
import Control.Monad.State
import qualified Data.Map as M
import Data.Maybe (catMaybes, fromMaybe)
+1
View File
@@ -22,6 +22,7 @@ module Text.Pandoc.Writers.JATS
, writeJatsArticleAuthoring
) where
import Control.Applicative ((<|>))
import Control.Monad
import Control.Monad.Reader
import Control.Monad.State
import Data.Generics (everywhere, mkT)
+9
View File
@@ -20,6 +20,15 @@ module Text.Pandoc.Writers.LaTeX (
, writeBeamer
) where
import Control.Monad.State.Strict
( MonadState(get, put),
gets,
modify,
evalStateT )
import Control.Monad
( MonadPlus(mplus),
liftM,
when,
unless )
import Data.Containers.ListUtils (nubOrd)
import Data.Char (isDigit)
import Data.List (intersperse, (\\))
+1
View File
@@ -15,6 +15,7 @@ module Text.Pandoc.Writers.LaTeX.Table
( tableToLaTeX
) where
import Control.Monad.State.Strict
import Control.Monad (when)
import Data.List (intersperse)
import qualified Data.List.NonEmpty as NonEmpty
import Data.List.NonEmpty (NonEmpty ((:|)))
+3 -1
View File
@@ -14,7 +14,9 @@ Conversion of 'Pandoc' documents to roff man page format.
-}
module Text.Pandoc.Writers.Man ( writeMan ) where
import Control.Monad.State.Strict
import Control.Monad ( liftM, zipWithM, forM )
import Control.Monad.State.Strict ( StateT, gets, modify, evalStateT )
import Control.Monad.Trans (MonadTrans(lift))
import Data.List (intersperse)
import Data.List.NonEmpty (nonEmpty)
import Data.Maybe (fromMaybe)
+1
View File
@@ -21,6 +21,7 @@ module Text.Pandoc.Writers.Markdown (
writeCommonMark,
writeMarkua,
writePlain) where
import Control.Monad (foldM, zipWithM, MonadPlus(..), when)
import Control.Monad.Reader
import Control.Monad.State.Strict
import Data.Default
@@ -16,6 +16,7 @@ module Text.Pandoc.Writers.Markdown.Inline (
attrsToMarkdown,
attrsToMarkua
) where
import Control.Monad (when, liftM2)
import Control.Monad.Reader
import Control.Monad.State.Strict
import Data.Char (isAlphaNum, isDigit)
+2
View File
@@ -21,6 +21,8 @@ TODO:
module Text.Pandoc.Writers.Ms ( writeMs ) where
import Control.Monad.State.Strict
( gets, modify, evalStateT )
import Control.Monad ( MonadPlus(mplus), liftM, unless, forM )
import Data.Containers.ListUtils (nubOrd)
import Data.Char (isAscii, isLower, isUpper, ord)
import Data.List (intercalate, intersperse)
+1
View File
@@ -25,6 +25,7 @@ However, @\<literal style="html">@ tag is used for HTML raw blocks
even though it is supported only in Emacs Muse.
-}
module Text.Pandoc.Writers.Muse (writeMuse) where
import Control.Monad (zipWithM)
import Control.Monad.Except (throwError)
import Control.Monad.Reader
import Control.Monad.State.Strict
+1
View File
@@ -13,6 +13,7 @@ Conversion of 'Pandoc' documents to ODT.
-}
module Text.Pandoc.Writers.ODT ( writeODT ) where
import Codec.Archive.Zip
import Control.Monad
import Control.Monad.Except (catchError, throwError)
import Control.Monad.State.Strict
import qualified Data.ByteString.Lazy as B
+1 -1
View File
@@ -24,7 +24,7 @@ module Text.Pandoc.Writers.OOXML ( mknode
) where
import Codec.Archive.Zip
import Control.Monad.Reader
import Control.Monad (mplus)
import Control.Monad.Except (throwError)
import Text.Pandoc.Error
import qualified Data.ByteString as B
+2 -1
View File
@@ -15,7 +15,8 @@ Conversion of 'Pandoc' documents to OpenDocument XML.
-}
module Text.Pandoc.Writers.OpenDocument ( writeOpenDocument ) where
import Control.Arrow ((***), (>>>))
import Control.Monad.State.Strict hiding (when)
import Control.Monad hiding (when)
import Control.Monad.State.Strict
import Data.Char (chr)
import Data.Foldable (find)
import Data.List (sortOn, sortBy, foldl')
+1
View File
@@ -16,6 +16,7 @@ Conversion of 'Pandoc' documents to Emacs Org-Mode.
Org-Mode: <http://orgmode.org>
-}
module Text.Pandoc.Writers.Org (writeOrg) where
import Control.Monad (zipWithM)
import Control.Monad.State.Strict
import Data.Char (isAlphaNum, isDigit)
import Data.List (intersperse, partition, transpose)
@@ -21,6 +21,7 @@ Text.Pandoc.Writers.Powerpoint.Presentation) to a zip archive.
module Text.Pandoc.Writers.Powerpoint.Output ( presentationToArchive
) where
import Control.Monad ( MonadPlus(mplus), foldM, unless )
import Control.Monad.Except (throwError, catchError)
import Control.Monad.Reader
import Control.Monad.State
@@ -43,7 +43,7 @@ module Text.Pandoc.Writers.Powerpoint.Presentation ( documentToPresentation
, LinkTarget(..)
) where
import Control.Monad
import Control.Monad.Reader
import Control.Monad.State
import Data.List (intercalate)
+2 -1
View File
@@ -14,7 +14,8 @@ Conversion of 'Pandoc' documents to reStructuredText.
reStructuredText: <http://docutils.sourceforge.net/rst.html>
-}
module Text.Pandoc.Writers.RST ( writeRST, flatten ) where
import Control.Monad.State.Strict
import Control.Monad.State.Strict ( StateT, gets, modify, evalStateT )
import Control.Monad (zipWithM, liftM)
import Data.Char (isSpace, generalCategory, isAscii, isAlphaNum,
GeneralCategory(
ClosePunctuation, OpenPunctuation, InitialQuote,
+1
View File
@@ -12,6 +12,7 @@
Conversion of 'Pandoc' format into Texinfo.
-}
module Text.Pandoc.Writers.Texinfo ( writeTexinfo ) where
import Control.Monad (zipWithM)
import Control.Monad.Except (throwError)
import Control.Monad.State.Strict
import Data.Char (chr, ord, isAlphaNum)
+2 -1
View File
@@ -13,7 +13,8 @@ Conversion of 'Pandoc' documents to Textile markup.
Textile: <http://thresholdstate.com/articles/4312/the-textile-reference-manual>
-}
module Text.Pandoc.Writers.Textile ( writeTextile ) where
import Control.Monad.State.Strict
import Control.Monad (zipWithM, liftM)
import Control.Monad.State.Strict ( StateT, gets, modify, evalStateT )
import Data.Char (isSpace)
import Data.Text (Text)
import qualified Data.Text as T