on master help sign in
Support megaparsec < 8
7467a08iko
idris.cabal+1−1
@@ -320,7 +320,7 @@ Library
320 , fingertree >= 0.1.4.1 && < 0.2
320 , fingertree >= 0.1.4.1 && < 0.2
321 , haskeline >= 0.7 && < 0.8
321 , haskeline >= 0.7 && < 0.8
322 , ieee754 >= 0.7 && < 0.9
322 , ieee754 >= 0.7 && < 0.9
323− , megaparsec >= 8 && < 9
323+ , megaparsec >= 7.0.4 && < 9
324 , mtl >= 2.1 && < 2.3
324 , mtl >= 2.1 && < 2.3
325 , network >= 2.7 && < 3.1.2
325 , network >= 2.7 && < 3.1.2
326 , optparse-applicative >= 0.13 && < 0.16
326 , optparse-applicative >= 0.13 && < 0.16
src/Idris/Parser/Stack.hs+13−1
@@ -5,7 +5,7 @@ Description : Idris parser stack and its primitives.
5License : BSD3
5License : BSD3
6Maintainer : The Idris Community.
6Maintainer : The Idris Community.
7-}
7-}
8−{-# LANGUAGE ConstraintKinds, FlexibleContexts, MultiParamTypeClasses #-}
8+{-# LANGUAGE ConstraintKinds, FlexibleContexts, MultiParamTypeClasses, CPP #-}
9module Idris.Parser.Stack
9module Idris.Parser.Stack
10 ( -- * Parsing
10 ( -- * Parsing
11 Parser(..)
11 Parser(..)
@@ -77,12 +77,20 @@ parseErrorOffset = P.errorOffset . parseError
77instance Message ParseError where
77instance Message ParseError where
78 messageExtent err = sourcePositionFC pos
78 messageExtent err = sourcePositionFC pos
79 where
79 where
80+#if MIN_VERSION_megaparsec(8,0,0)
80 P.PosState {P.pstateSourcePos = pos} =
81 P.PosState {P.pstateSourcePos = pos} =
81 P.reachOffsetNoLine (parseErrorOffset err) (parseErrorPosState err)
82 P.reachOffsetNoLine (parseErrorOffset err) (parseErrorPosState err)
83+#else
84+ (pos, _) = P.reachOffsetNoLine (parseErrorOffset err) (parseErrorPosState err)
85+#endif
82 messageText = PP.text . init . P.parseErrorTextPretty . parseError
86 messageText = PP.text . init . P.parseErrorTextPretty . parseError
83 messageSource err = Just sline
87 messageSource err = Just sline
84 where
88 where
89+#if MIN_VERSION_megaparsec(8,0,0)
85 (sline, _) = P.reachOffset (parseErrorOffset err) (parseErrorPosState err)
90 (sline, _) = P.reachOffset (parseErrorOffset err) (parseErrorPosState err)
91+#else
92+ (_, sline, _) = P.reachOffset (parseErrorOffset err) (parseErrorPosState err)
93+#endif
86
94
87-- | A fully formatted parse error, with caret and bar, etc.
95-- | A fully formatted parse error, with caret and bar, etc.
88prettyError :: ParseError -> String
96prettyError :: ParseError -> String
@@ -90,7 +98,11 @@ prettyError = P.errorBundlePretty . unParseError
90
98
91{- * Mark and restore -}
99{- * Mark and restore -}
92
100
101+#if MIN_VERSION_megaparsec(8,0,0)
93type Mark = P.State String Void
102type Mark = P.State String Void
103+#else
104+type Mark = P.State String
105+#endif
94
106
95-- | Retrieve the parser state so we can restart from this point later.
107-- | Retrieve the parser state so we can restart from this point later.
96mark :: Parsing m => m Mark
108mark :: Parsing m => m Mark