{-|
Description : Errors for feedback to users
-}
module Language.Haskell.Formatter.Error
       (Error, createStyleFormatError, createParseError, createAssertionError,
        isAssertionError)
       where
import qualified Language.Haskell.Formatter.Location as Location
import qualified Language.Haskell.Formatter.Source as Source

data Error = StyleFormatError String
           | ParseError Location.SrcLoc String
           | AssertionError String
               deriving (Error -> Error -> Bool
(Error -> Error -> Bool) -> (Error -> Error -> Bool) -> Eq Error
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Error -> Error -> Bool
$c/= :: Error -> Error -> Bool
== :: Error -> Error -> Bool
$c== :: Error -> Error -> Bool
Eq, Eq Error
Eq Error
-> (Error -> Error -> Ordering)
-> (Error -> Error -> Bool)
-> (Error -> Error -> Bool)
-> (Error -> Error -> Bool)
-> (Error -> Error -> Bool)
-> (Error -> Error -> Error)
-> (Error -> Error -> Error)
-> Ord Error
Error -> Error -> Bool
Error -> Error -> Ordering
Error -> Error -> Error
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Error -> Error -> Error
$cmin :: Error -> Error -> Error
max :: Error -> Error -> Error
$cmax :: Error -> Error -> Error
>= :: Error -> Error -> Bool
$c>= :: Error -> Error -> Bool
> :: Error -> Error -> Bool
$c> :: Error -> Error -> Bool
<= :: Error -> Error -> Bool
$c<= :: Error -> Error -> Bool
< :: Error -> Error -> Bool
$c< :: Error -> Error -> Bool
compare :: Error -> Error -> Ordering
$ccompare :: Error -> Error -> Ordering
$cp1Ord :: Eq Error
Ord)

instance Show Error where
        show :: Error -> String
show (StyleFormatError String
message) = String
message
        show (ParseError SrcLoc
position String
message)
          = [String] -> String
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat [SrcLoc -> String
forall a. Pretty a => a -> String
Source.prettyPrint SrcLoc
position, String
separator, String
message]
          where separator :: String
separator = String
": "
        show (AssertionError String
message) = String
message

createStyleFormatError :: String -> Error
createStyleFormatError :: String -> Error
createStyleFormatError = String -> Error
StyleFormatError

createParseError :: Location.SrcLoc -> String -> Error
createParseError :: SrcLoc -> String -> Error
createParseError = SrcLoc -> String -> Error
ParseError

createAssertionError :: String -> Error
createAssertionError :: String -> Error
createAssertionError = String -> Error
AssertionError

isAssertionError :: Error -> Bool
isAssertionError :: Error -> Bool
isAssertionError (StyleFormatError String
_) = Bool
False
isAssertionError (ParseError SrcLoc
_ String
_) = Bool
False
isAssertionError (AssertionError String
_) = Bool
True