@@ -5,7 +5,7 @@ Description : Idris parser stack and its primitives.
55License : BSD3
66Maintainer : The Idris Community.
77-}
8−{-# LANGUAGE ConstraintKinds, FlexibleContexts, MultiParamTypeClasses #-}
8+{-# LANGUAGE ConstraintKinds, FlexibleContexts, MultiParamTypeClasses, CPP #-}
99module Idris.Parser.Stack
1010 ( -- * Parsing
1111 Parser(..)
@@ -77,12 +77,20 @@ parseErrorOffset = P.errorOffset . parseError
7777instance Message ParseError where
7878 messageExtent err = sourcePositionFC pos
7979 where
80+#if MIN_VERSION_megaparsec(8,0,0)
8081 P.PosState {P.pstateSourcePos = pos} =
8182 P.reachOffsetNoLine (parseErrorOffset err) (parseErrorPosState err)
83+#else
84+ (pos, _) = P.reachOffsetNoLine (parseErrorOffset err) (parseErrorPosState err)
85+#endif
8286 messageText = PP.text . init . P.parseErrorTextPretty . parseError
8387 messageSource err = Just sline
8488 where
89+#if MIN_VERSION_megaparsec(8,0,0)
8590 (sline, _) = P.reachOffset (parseErrorOffset err) (parseErrorPosState err)
91+#else
92+ (_, sline, _) = P.reachOffset (parseErrorOffset err) (parseErrorPosState err)
93+#endif
8694
8795-- | A fully formatted parse error, with caret and bar, etc.
8896prettyError :: ParseError -> String
@@ -90,7 +98,11 @@ prettyError = P.errorBundlePretty . unParseError
9098
9199{- * Mark and restore -}
92100
101+#if MIN_VERSION_megaparsec(8,0,0)
93102type Mark = P.State String Void
103+#else
104+type Mark = P.State String
105+#endif
94106
95107-- | Retrieve the parser state so we can restart from this point later.
96108mark :: Parsing m => m Mark