@@ -5,7 +5,7 @@ Description : Idris parser stack and its primitives.
5License : BSD3
5License : BSD3
6Maintainer : The Idris Community.
6Maintainer : The Idris Community.
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
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)
84+ (pos, _) = P.reachOffsetNoLine (parseErrorOffset err) (parseErrorPosState err)
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
89+#if MIN_VERSION_megaparsec(8,0,0)
85 (sline, _) = P.reachOffset (parseErrorOffset err) (parseErrorPosState err)
90 (sline, _) = P.reachOffset (parseErrorOffset err) (parseErrorPosState err)
92+ (_, sline, _) = P.reachOffset (parseErrorOffset err) (parseErrorPosState err)
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
91{- * Mark and restore -}
99{- * Mark and restore -}
101+#if MIN_VERSION_megaparsec(8,0,0)
93type Mark = P.State String Void
102type Mark = P.State String Void
104+type Mark = P.State String
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