on master help sign in
Compatibility with GHC 8.8 and Cabal 3.0
commit1dd93169c93a29a8cc4c3d0ec799166490b607bb authorNiklas Larsson <niklas@mm.st> dateWed 22 Jan 2020, 20:50 (7 years ago) parent4d8d85d
5 files changed+18−9
idris.cabal+6−5 src/Idris/CmdOptions.hs+3−2 src/Idris/Core/CaseTree.hs+1−1 src/Idris/Core/TT.hs+6 src/Idris/Parser/Stack.hs+2−1
idris.cabal+6−5
@@ -100,7 +100,7 @@ source-repository head
100100
101101custom-setup
102102 setup-depends:
103− Cabal >= 1.10 && <2.5,
103+ Cabal >= 1.10 && < 3.1,
104104 base >= 4 && <5,
105105 directory,
106106 filepath,
@@ -280,7 +280,7 @@ Library
280280 , blaze-html >= 0.6.1.3 && < 0.10
281281 , blaze-markup >= 0.5.2.1 && < 0.9
282282 , bytestring < 0.11
283− , cheapskate >= 0.1.1 && < 0.2
283+ , cheapskate >= 0.1.1.2 && < 0.2
284284 , code-page >= 0.1 && < 0.3
285285 , containers >= 0.5 && < 0.7
286286 , deepseq < 1.5
@@ -292,7 +292,7 @@ Library
292292 , megaparsec >= 7.0.4 && < 8
293293 , mtl >= 2.1 && < 2.3
294294 , network >= 2.7 && < 2.9
295− , optparse-applicative >= 0.13 && < 0.15
295+ , optparse-applicative >= 0.13 && < 0.16
296296 , parser-combinators >= 1.0.0
297297 , pretty < 1.2
298298 , process < 1.7
@@ -300,8 +300,8 @@ Library
300300 , safe >= 0.3.9
301301 , split < 0.3
302302 , terminal-size < 0.4
303− , text >=1.2.1.0 && < 1.3
304− , time >= 1.4 && < 1.9
303+ , text >=1.2.1.0 && < 1.4
304+ , time >= 1.4 && < 2.0
305305 , transformers >= 0.5 && < 0.6
306306 , uniplate >=1.6 && < 1.7
307307 , unordered-containers < 0.3
@@ -314,6 +314,7 @@ Library
314314
315315 if !impl(ghc >= 8.0)
316316 Build-Depends: semigroups == 0.18.*
317+ , fail == 4.9.0.*
317318
318319 Default-Language: Haskell2010
319320 ghc-prof-options: -auto-all -caf-all
src/Idris/CmdOptions.hs+3−2
@@ -18,6 +18,7 @@ import Idris.Info (getIdrisVersion)
1818import Idris.Options
1919import IRTS.CodegenCommon
2020
21+import qualified Control.Monad.Fail as Fail
2122import Control.Monad.Trans (lift)
2223import Control.Monad.Trans.Except (throwE)
2324import Control.Monad.Trans.Reader (ask)
@@ -264,7 +265,7 @@ parseCodegen :: String -> Codegen
264265parseCodegen "bytecode" = Bytecode
265266parseCodegen cg = Via IBCFormat (map toLower cg)
266267
267−parseLogCats :: Monad m => String -> m [LogCat]
268+parseLogCats :: Fail.MonadFail m => String -> m [LogCat]
268269parseLogCats s =
269270 case lastMay (readP_to_S doParse s) of
270271 Just (xs, _) -> return xs
@@ -290,7 +291,7 @@ parseLogCats s =
290291 s <- look
291292 fail $ "Category: " ++ s ++ " is not recognised."
292293
293−parseConsoleWidth :: Monad m => String -> m ConsoleWidth
294+parseConsoleWidth :: Fail.MonadFail m => String -> m ConsoleWidth
294295parseConsoleWidth "auto" = return AutomaticWidth
295296parseConsoleWidth "infinite" = return InfinitelyWide
296297parseConsoleWidth s =
src/Idris/Core/CaseTree.hs+1−1
@@ -627,7 +627,7 @@ groupCons cs = gc [] cs
627627 PConst cval -> return $ addConG cval (ps, res) acc
628628 PSuc n -> return $ addg False CSuc [n] (ps, res) acc
629629 PReflected fn args -> return $ addg False (CFn fn) args (ps, res) acc
630− pat -> fail $ show pat ++ " is not a constructor or constant (can't happen)"
630+ pat -> error $ show pat ++ " is not a constructor or constant (can't happen)"
631631
632632 addg uniq c conargs res []
633633 = [ConGroup uniq c [(conargs, res)]]
src/Idris/Core/TT.hs+6
@@ -70,6 +70,7 @@ import qualified Prelude as S (Semigroup(..))
7070import Control.Applicative (Alternative, Applicative(..))
7171import qualified Control.Applicative as A (Alternative(..))
7272import Control.DeepSeq (($!!))
73+import qualified Control.Monad.Fail as Fail
7374import Control.Monad.State.Strict
7475import Data.Binary hiding (get, put)
7576import Data.Char
@@ -324,6 +325,11 @@ bindTC x k = case x of
324325instance Monad TC where
325326 return x = OK x
326327 x >>= k = bindTC x k
328+#if !(MIN_VERSION_base(4,12,0))
329+ fail = Fail.fail
330+#endif
331+
332+instance Fail.MonadFail TC where
327333 fail e = Error (InternalMsg e)
328334
329335instance MonadPlus TC where
src/Idris/Parser/Stack.hs+2−1
@@ -36,6 +36,7 @@ import Idris.Core.TT (FC(..))
3636import Idris.Output (Message(..))
3737
3838import Control.Arrow (app)
39+import qualified Control.Monad.Fail as Fail
3940import Control.Monad.State.Strict (StateT(..), evalStateT)
4041import Control.Monad.Writer.Strict (MonadWriter(..), WriterT(..), listen,
4142 runWriterT, tell)
@@ -51,7 +52,7 @@ import qualified Util.Pretty as PP
5152type Parser s = StateT s (WriterT FC (P.Parsec Void String))
5253
5354-- | A constraint for parsing without state
54−type Parsing m = (P.MonadParsec Void String m, MonadWriter FC m)
55+type Parsing m = (Fail.MonadFail m, P.MonadParsec Void String m, MonadWriter FC m)
5556
5657-- | Run the Idris parser stack
5758runparser :: Parser st res -> st -> String -> String -> Either ParseError res