parseerror-eq-0.1.0.0: src/Text/ParseErrorEq.hs
{-# OPTIONS_GHC -fno-warn-orphans #-}
{-|
Module : Text.ParseErrorEq
Description : Adds an Eq instance for Parsec's ParseError type if needed
Copyright : (c) Stack Builders Inc., 2015
License : GPL-3
Maintainer : justin@stackbuilders.com
Stability : experimental
Portability : POSIX
This module adds an Eq instance for Parsec's ParseError type if it's
needed. Import by using (since this module only provides instances):
> import Text.ParseErrorEq ()
For reference, Parsec 3.1.9 adds the Eq instance, in the commit here:
https://github.com/aslatter/parsec/commit/3fb40aaa683fd90f3f0dd9f3c32c6ba707fb24b1
-}
module Text.ParseErrorEq where
#if MIN_VERSION_parsec(3,1,9)
-- ParseError Eq instance already defined in Parsec, not necessary to add.
#else
import Text.Parsec.Error (ParseError)
import Text.ParserCombinators.Parsec.Error
(errorPos, errorMessages, messageString)
-- This implementation of Eq for ParseError is the same as the one
-- added in Parsec in the above commit.
instance Eq ParseError where
l == r
= errorPos l == errorPos r && messageStrs l == messageStrs r
where messageStrs = map messageString . errorMessages
#endif