Add MonadFail instance for ParserM master
authorErik de Castro Lopo <erikd@mega-nerd.com>
Sat, 22 Jun 2019 03:50:14 +0000 (13:50 +1000)
committerMarge Bot <ben+marge-bot@smart-cactus.org>
Mon, 24 Jun 2019 05:12:22 +0000 (01:12 -0400)
utils/genprimopcode/ParserM.hs

index 190ec0e..1691bba 100644 (file)
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 module ParserM (
     -- Parser Monad
     ParserM(..), AlexInput, run_parser,
@@ -18,7 +19,13 @@ module ParserM (
  ) where
 
 import Control.Applicative
+
+#if __GLASGOW_HASKELL__ >= 806
+import Prelude hiding (fail)
+import Control.Monad.Fail (MonadFail (..))
+#else
 import Prelude
+#endif
 
 import Control.Monad (ap, liftM)
 import Data.Word (Word8)
@@ -42,6 +49,10 @@ instance Monad ParserM where
                                             Left err ->
                                                 Left err
     return a = ParserM $ \i s -> Right (i, s, a)
+
+#if __GLASGOW_HASKELL__ >= 806
+instance MonadFail ParserM where
+#endif
     fail err = ParserM $ \_ _ -> Left err
 
 run_parser :: ParserM a -> (String -> Either String a)