on master help sign in
Build with GHC8 and trifecta-1.6
a09a1bfDavid Kraeutmann
.travis.yml+8
@@ -10,8 +10,10 @@ addons:
10 - ghc-7.6.3
10 - ghc-7.6.3
11 - ghc-7.8.4
11 - ghc-7.8.4
12 - ghc-7.10.2
12 - ghc-7.10.2
13+ - ghc-8.0.1
13 - cabal-install-1.20
14 - cabal-install-1.20
14 - cabal-install-1.22
15 - cabal-install-1.22
16+ - cabal-install-1.24
15 # test dependencies
17 # test dependencies
16 - expect
18 - expect
17 - cppcheck
19 - cppcheck
@@ -35,6 +37,12 @@ matrix:
35 compiler: ": #GHC 7.10.2"
37 compiler: ": #GHC 7.10.2"
36 - env: CABALVER="1.22" GHCVER="7.10.2" TESTS="test_c"
38 - env: CABALVER="1.22" GHCVER="7.10.2" TESTS="test_c"
37 compiler: ": #GHC 7.10.2"
39 compiler: ": #GHC 7.10.2"
40+ - env: CABALVER="1.24" GHCVER="8.0.1" TESTS="lib_doc doc"
41+ compiler: ": #GHC 8.0.1"
42+ - env: CABALVER="1.24" GHCVER="8.0.1" TESTS="test_js"
43+ compiler: ": #GHC 8.0.1"
44+ - env: CABALVER="1.24" GHCVER="8.0.1" TESTS="test_c"
45+ compiler: ": #GHC 8.0.1"
38
46
39cache:
47cache:
40 directories:
48 directories:
idris.cabal+5−5
@@ -1027,7 +1027,7 @@ Library
1027 , ansi-terminal < 0.7
1027 , ansi-terminal < 0.7
1028 , ansi-wl-pprint < 0.7
1028 , ansi-wl-pprint < 0.7
1029 , base64-bytestring < 1.1
1029 , base64-bytestring < 1.1
1030− , binary >= 0.7 && < 0.8
1030+ , binary >= 0.7 && < 0.9
1031 , blaze-html >= 0.6.1.3 && < 0.9
1031 , blaze-html >= 0.6.1.3 && < 0.9
1032 , blaze-markup >= 0.5.2.1 && < 0.8
1032 , blaze-markup >= 0.5.2.1 && < 0.8
1033 , bytestring < 0.11
1033 , bytestring < 0.11
@@ -1044,14 +1044,14 @@ Library
1044 , optparse-applicative >= 0.11 && < 0.13
1044 , optparse-applicative >= 0.11 && < 0.13
1045 , parsers >= 0.9 && < 0.13
1045 , parsers >= 0.9 && < 0.13
1046 , pretty < 1.2
1046 , pretty < 1.2
1047− , process < 1.3
1047+ , process < 1.5
1048 , split < 0.3
1048 , split < 0.3
1049 , terminal-size < 0.4
1049 , terminal-size < 0.4
1050 , text >=1.2.1.0 && < 1.3
1050 , text >=1.2.1.0 && < 1.3
1051− , time >= 1.4 && < 1.6
1051+ , time >= 1.4 && < 1.7
1052− , transformers < 0.5
1052+ , transformers < 0.6
1053 , transformers-compat >= 0.3
1053 , transformers-compat >= 0.3
1054− , trifecta >= 1.1 && < 1.6
1054+ , trifecta >= 1.6 && < 1.7
1055 , uniplate >=1.6 && < 1.7
1055 , uniplate >=1.6 && < 1.7
1056 , unordered-containers < 0.3
1056 , unordered-containers < 0.3
1057 , utf8-string < 1.1
1057 , utf8-string < 1.1
src/Idris/Parser.hs+2−2
@@ -1569,7 +1569,7 @@ parseImports :: FilePath -> String -> Idris (Maybe (Docstring ()), [String], [Im
1569parseImports fname input
1569parseImports fname input
1570 = do i <- getIState
1570 = do i <- getIState
1571 case parseString (runInnerParser (evalStateT imports i)) (Directed (UTF8.fromString fname) 0 0 0 0) input of
1571 case parseString (runInnerParser (evalStateT imports i)) (Directed (UTF8.fromString fname) 0 0 0 0) input of
1572− Failure err -> fail (show err)
1572+ Failure (ErrInfo err _) -> fail (show err)
1573 Success (x, annots, i) ->
1573 Success (x, annots, i) ->
1574 do putIState i
1574 do putIState i
1575 fname' <- runIO $ Dir.makeAbsolute fname
1575 fname' <- runIO $ Dir.makeAbsolute fname
@@ -1631,7 +1631,7 @@ parseProg :: SyntaxInfo -> FilePath -> String -> Maybe Delta ->
1631parseProg syn fname input mrk
1631parseProg syn fname input mrk
1632 = do i <- getIState
1632 = do i <- getIState
1633 case runparser mainProg i fname input of
1633 case runparser mainProg i fname input of
1634− Failure doc -> do -- FIXME: Get error location from trifecta
1634+ Failure (ErrInfo doc _) -> do -- FIXME: Get error location from trifecta
1635 -- this can't be the solution!
1635 -- this can't be the solution!
1636 -- Issue #1575 on the issue tracker.
1636 -- Issue #1575 on the issue tracker.
1637 -- https://github.com/idris-lang/Idris-dev/issues/1575
1637 -- https://github.com/idris-lang/Idris-dev/issues/1575
src/Idris/Parser/Helpers.hs+15
@@ -58,6 +58,21 @@ newtype IdrisInnerParser a = IdrisInnerParser { runInnerParser :: Parser a }
58
58
59deriving instance Parsing IdrisInnerParser
59deriving instance Parsing IdrisInnerParser
60
60
61+#if MIN_VERSION_base(4,9,0)
62+instance {-# OVERLAPPING #-} DeltaParsing IdrisParser where
63+ line = lift line
64+ {-# INLINE line #-}
65+ position = lift position
66+ {-# INLINE position #-}
67+ slicedWith f (StateT m) = StateT $ \s -> slicedWith (\(a,s') b -> (f a b, s')) $ m s
68+ {-# INLINE slicedWith #-}
69+ rend = lift rend
70+ {-# INLINE rend #-}
71+ restOfLine = lift restOfLine
72+ {-# INLINE restOfLine #-}
73+
74+#endif
75+
61#if MIN_VERSION_base(4,8,0)
76#if MIN_VERSION_base(4,8,0)
62instance {-# OVERLAPPING #-} TokenParsing IdrisParser where
77instance {-# OVERLAPPING #-} TokenParsing IdrisParser where
63#else
78#else
src/Idris/Prover.hs+3−3
@@ -39,7 +39,7 @@ import qualified Idris.IdeMode as IdeMode
39import Idris.Output
39import Idris.Output
40import Idris.TypeSearch (searchByType)
40import Idris.TypeSearch (searchByType)
41
41
42−import Text.Trifecta.Result(Result(..))
42+import Text.Trifecta.Result(Result(..), ErrInfo(..))
43
43
44import System.IO (Handle, stdin, stdout, hPutStrLn)
44import System.IO (Handle, stdin, stdout, hPutStrLn)
45import System.Console.Haskeline
45import System.Console.Haskeline
@@ -325,7 +325,7 @@ elabloop info fn d prompt prf e prev h env
325 (d, prev', st, done, prf', env', res) <-
325 (d, prev', st, done, prf', env', res) <-
326 idrisCatch
326 idrisCatch
327 (case cmd of
327 (case cmd of
328− Failure err ->
328+ Failure (ErrInfo err _) ->
329 return (False, prev, e, False, prf, env, Left . Msg . show . fixColour (idris_colourRepl ist) $ err)
329 return (False, prev, e, False, prf, env, Left . Msg . show . fixColour (idris_colourRepl ist) $ err)
330 Success (Left cmd') ->
330 Success (Left cmd') ->
331 case cmd' of
331 case cmd' of
@@ -440,7 +440,7 @@ ploop fn d prompt prf e h
440 _ -> return ()
440 _ -> return ()
441 (d, st, done, prf', res) <- idrisCatch
441 (d, st, done, prf', res) <- idrisCatch
442 (case cmd of
442 (case cmd of
443− Failure err -> return (False, e, False, prf, Left . Msg . show . fixColour (idris_colourRepl i) $ err)
443+ Failure (ErrInfo err _) -> return (False, e, False, prf, Left . Msg . show . fixColour (idris_colourRepl i) $ err)
444 Success Undo -> do (_, st) <- elabStep e loadState
444 Success Undo -> do (_, st) <- elabStep e loadState
445 return (True, st, False, init prf, Right $ iPrintResult "")
445 return (True, st, False, init prf, Right $ iPrintResult "")
446 Success ProofState -> return (True, e, False, prf, Right $ iPrintResult "")
446 Success ProofState -> return (True, e, False, prf, Right $ iPrintResult "")
src/Idris/REPL.hs+10−10
@@ -80,7 +80,7 @@ import Data.List.Split (splitOn)
80import Data.List (groupBy)
80import Data.List (groupBy)
81import qualified Data.Text as T
81import qualified Data.Text as T
82
82
83−import Text.Trifecta.Result(Result(..))
83+import Text.Trifecta.Result(Result(..), ErrInfo(..))
84
84
85import System.Console.Haskeline as H
85import System.Console.Haskeline as H
86import System.FilePath
86import System.FilePath
@@ -190,7 +190,7 @@ processNetCmd :: IState -> IState -> Handle -> FilePath -> String ->
190 IO (IState, FilePath)
190 IO (IState, FilePath)
191processNetCmd orig i h fn cmd
191processNetCmd orig i h fn cmd
192 = do res <- case parseCmd i "(net)" cmd of
192 = do res <- case parseCmd i "(net)" cmd of
193− Failure err -> return (Left (Msg " invalid command"))
193+ Failure (ErrInfo err _) -> return (Left (Msg " invalid command"))
194 Success (Right c) -> runExceptT $ evalStateT (processNet fn c) i
194 Success (Right c) -> runExceptT $ evalStateT (processNet fn c) i
195 Success (Left err) -> return (Left (Msg err))
195 Success (Left err) -> return (Left (Msg err))
196 case res of
196 case res of
@@ -307,7 +307,7 @@ runIdeModeCommand h id orig fn mods (IdeMode.Interpret cmd) =
307 do c <- colourise
307 do c <- colourise
308 i <- getIState
308 i <- getIState
309 case parseCmd i "(input)" cmd of
309 case parseCmd i "(input)" cmd of
310− Failure err -> iPrintError $ show (fixColour False err)
310+ Failure (ErrInfo err _) -> iPrintError $ show (fixColour False err)
311 Success (Right (Prove mode n')) ->
311 Success (Right (Prove mode n')) ->
312 idrisCatch
312 idrisCatch
313 (do process fn (Prove mode n')
313 (do process fn (Prove mode n')
@@ -722,8 +722,8 @@ processInput cmd orig inputs efile
722 let fn = fromMaybe "" (listToMaybe inputs)
722 let fn = fromMaybe "" (listToMaybe inputs)
723 c <- colourise
723 c <- colourise
724 case parseCmd i "(input)" cmd of
724 case parseCmd i "(input)" cmd of
725− Failure err -> do iputStrLn $ show (fixColour c err)
725+ Failure (ErrInfo err _) -> do iputStrLn $ show (fixColour c err)
726− return (Just inputs)
726+ return (Just inputs)
727 Success (Right Reload) ->
727 Success (Right Reload) ->
728 reload orig inputs
728 reload orig inputs
729 Success (Right Watch) ->
729 Success (Right Watch) ->
@@ -1787,8 +1787,8 @@ idrisMain opts =
1787 mapM_ (\str -> do ist <- getIState
1787 mapM_ (\str -> do ist <- getIState
1788 c <- colourise
1788 c <- colourise
1789 case parseExpr ist str of
1789 case parseExpr ist str of
1790− Failure err -> do iputStrLn $ show (fixColour c err)
1790+ Failure (ErrInfo err _) -> do iputStrLn $ show (fixColour c err)
1791− runIO $ exitWith (ExitFailure 1)
1791+ runIO $ exitWith (ExitFailure 1)
1792 Success e -> process "" (Eval e))
1792 Success e -> process "" (Eval e))
1793 exprs
1793 exprs
1794 runIO exitSuccess
1794 runIO exitSuccess
@@ -1843,8 +1843,8 @@ execScript :: String -> Idris ()
1843execScript expr = do i <- getIState
1843execScript expr = do i <- getIState
1844 c <- colourise
1844 c <- colourise
1845 case parseExpr i expr of
1845 case parseExpr i expr of
1846− Failure err -> do iputStrLn $ show (fixColour c err)
1846+ Failure (ErrInfo err _) -> do iputStrLn $ show (fixColour c err)
1847− runIO $ exitWith (ExitFailure 1)
1847+ runIO $ exitWith (ExitFailure 1)
1848 Success term -> do ctxt <- getContext
1848 Success term -> do ctxt <- getContext
1849 (tm, _) <- elabVal (recinfo (fileFC "toplevel")) ERHS term
1849 (tm, _) <- elabVal (recinfo (fileFC "toplevel")) ERHS term
1850 res <- execute tm
1850 res <- execute tm
@@ -1879,7 +1879,7 @@ initScript = do script <- getInitScript
1879 runInit h
1879 runInit h
1880 processLine i cmd input clr =
1880 processLine i cmd input clr =
1881 case parseCmd i input cmd of
1881 case parseCmd i input cmd of
1882− Failure err -> runIO $ print (fixColour clr err)
1882+ Failure (ErrInfo err _) -> runIO $ print (fixColour clr err)
1883 Success (Right Reload) -> iPrintError "Init scripts cannot reload the file"
1883 Success (Right Reload) -> iPrintError "Init scripts cannot reload the file"
1884 Success (Right (Load f _)) -> iPrintError "Init scripts cannot load files"
1884 Success (Right (Load f _)) -> iPrintError "Init scripts cannot load files"
1885 Success (Right (ModImport f)) -> iPrintError "Init scripts cannot import modules"
1885 Success (Right (ModImport f)) -> iPrintError "Init scripts cannot import modules"
src/Pkg/PParser.hs+15−1
@@ -59,6 +59,20 @@ defaultPkg = PkgDesc "" Nothing Nothing Nothing Nothing
59instance HasLastTokenSpan PParser where
59instance HasLastTokenSpan PParser where
60 getLastTokenSpan = return Nothing
60 getLastTokenSpan = return Nothing
61
61
62+#if MIN_VERSION_base(4,9,0)
63+instance {-# OVERLAPPING #-} DeltaParsing PParser where
64+ line = lift line
65+ {-# INLINE line #-}
66+ position = lift position
67+ {-# INLINE position #-}
68+ slicedWith f (StateT m) = StateT $ \s -> slicedWith (\(a,s') b -> (f a b, s')) $ m s
69+ {-# INLINE slicedWith #-}
70+ rend = lift rend
71+ {-# INLINE rend #-}
72+ restOfLine = lift restOfLine
73+ {-# INLINE restOfLine #-}
74+#endif
75+
62#if MIN_VERSION_base(4,8,0)
76#if MIN_VERSION_base(4,8,0)
63instance {-# OVERLAPPING #-} TokenParsing PParser where
77instance {-# OVERLAPPING #-} TokenParsing PParser where
64#else
78#else
@@ -71,7 +85,7 @@ parseDesc :: FilePath -> IO PkgDesc
71parseDesc fp = do
85parseDesc fp = do
72 p <- readFile fp
86 p <- readFile fp
73 case runparser pPkg defaultPkg fp p of
87 case runparser pPkg defaultPkg fp p of
74− Failure err -> fail (show $ PP.plain err)
88+ Failure (ErrInfo err _) -> fail (show $ PP.plain err)
75 Success x -> return x
89 Success x -> return x
76
90
77pPkg :: PParser PkgDesc
91pPkg :: PParser PkgDesc
stack.yaml+3−2
@@ -1,7 +1,7 @@
1−resolver: lts-6.4
1+resolver: lts-6.5
2
2
3packages:
3packages:
4− - '.'
4+ - location: .
5
5
6flags:
6flags:
7 idris:
7 idris:
@@ -10,6 +10,7 @@ flags:
10
10
11extra-deps:
11extra-deps:
12 - libffi-0.1
12 - libffi-0.1
13+ - trifecta-1.6
13
14
14nix:
15nix:
15 enable: false
16 enable: false