lib: cleanup up megaparsec 6 compat module, simplify error type (#594)
This commit is contained in:
		
							parent
							
								
									d7d5f8a064
								
							
						
					
					
						commit
						ecfc8224dd
					
				| @ -1,3 +1,6 @@ | |||||||
|  | -- ^ Paper over some differences between megaparsec 5 and 6, | ||||||
|  | -- making it possible to write code that supports both. | ||||||
|  | 
 | ||||||
| {-# LANGUAGE CPP, FlexibleContexts #-} | {-# LANGUAGE CPP, FlexibleContexts #-} | ||||||
| 
 | 
 | ||||||
| module Text.Megaparsec.Compat | module Text.Megaparsec.Compat | ||||||
| @ -24,7 +27,20 @@ import Data.List.NonEmpty (fromList) | |||||||
| import Data.Void (Void) | import Data.Void (Void) | ||||||
| 
 | 
 | ||||||
| -- | A basic parse error type. | -- | A basic parse error type. | ||||||
| type MPErr = ErrorFancy Void | type MPErr = Void | ||||||
|  | 
 | ||||||
|  | -- | Make a simple parse error. | ||||||
|  | mpMkParseError :: FilePath -> String -> ParseError Char String | ||||||
|  | mpMkParseError f s = FancyError (fromList [initialPos f]) (S.singleton $ ErrorFail s) | ||||||
|  | 
 | ||||||
|  | -- | Make a Pos. With a negative argument, throws InvalidPosException (megaparsec >= 6) | ||||||
|  | -- or calls error (megaparsec < 6). | ||||||
|  | mpMkPos :: Int -> Pos | ||||||
|  | mpMkPos = mkPos  | ||||||
|  | 
 | ||||||
|  | -- | Unmake a Pos. | ||||||
|  | mpUnPos :: Pos -> Int | ||||||
|  | mpUnPos = unPos | ||||||
| 
 | 
 | ||||||
| -- | Parse and return some Text.   | -- | Parse and return some Text.   | ||||||
| mptext :: MonadParsec e Text m => Tokens Text -> m (Tokens Text)  | mptext :: MonadParsec e Text m => Tokens Text -> m (Tokens Text)  | ||||||
| @ -34,33 +50,24 @@ mptext = string | |||||||
| 
 | 
 | ||||||
| import Text.Megaparsec.Prim (MonadParsec) | import Text.Megaparsec.Prim (MonadParsec) | ||||||
| 
 | 
 | ||||||
|  | -- | A basic parse error type. | ||||||
| type MPErr = Dec | type MPErr = Dec | ||||||
| 
 | 
 | ||||||
|  | -- | Make a simple parse error. | ||||||
|  | mpMkParseError :: FilePath -> String -> ParseError Char String | ||||||
|  | mpMkParseError f s = (mempty :: ParseError Char String){errorCustom = S.singleton $ f ++ ": " ++ s} | ||||||
|  | 
 | ||||||
|  | -- | Make a Pos. With a negative argument, throws InvalidPosException (megaparsec >= 6) | ||||||
|  | -- or calls error (megaparsec < 6). | ||||||
|  | mpMkPos :: Int -> Pos | ||||||
|  | mpMkPos = unsafePos . fromIntegral  | ||||||
|  | 
 | ||||||
|  | -- | Unmake a Pos. | ||||||
|  | mpUnPos :: Pos -> Int | ||||||
|  | mpUnPos = fromIntegral . unPos  | ||||||
|  | 
 | ||||||
|  | -- | Parse and return some Text.   | ||||||
| mptext :: MonadParsec e Text m => Text -> m Text | mptext :: MonadParsec e Text m => Text -> m Text | ||||||
| mptext = fmap pack . string . unpack | mptext = fmap pack . string . unpack | ||||||
| 
 | 
 | ||||||
| #endif | #endif | ||||||
| 
 |  | ||||||
| mpMkPos :: Int -> Pos |  | ||||||
| mpMkPos =  |  | ||||||
| #if MIN_VERSION_megaparsec(6,0,0) |  | ||||||
|             mkPos |  | ||||||
| #else |  | ||||||
|             unsafePos . fromIntegral  |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| mpUnPos :: Pos -> Int |  | ||||||
| mpUnPos =  |  | ||||||
| #if MIN_VERSION_megaparsec(6,0,0) |  | ||||||
|             unPos |  | ||||||
| #else |  | ||||||
|             fromIntegral . unPos  |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| mpMkParseError :: FilePath -> String -> ParseError Char String |  | ||||||
| mpMkParseError f s =  |  | ||||||
| #if MIN_VERSION_megaparsec(6,0,0) |  | ||||||
|   FancyError (fromList [initialPos f]) (S.singleton $ ErrorFail s) |  | ||||||
| #else |  | ||||||
|   (mempty :: ParseError Char String){errorCustom = S.singleton $ f ++ ": " ++ s} |  | ||||||
| #endif |  | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user