trifecta-0.53: src/Text/Trifecta/Diagnostic/Err/State.hs
-----------------------------------------------------------------------------
-- |
-- Module : Text.Trifecta.Diagnostic.Err.State
-- Copyright : (C) 2011 Edward Kmett
-- License : BSD-style (see the file LICENSE)
--
-- Maintainer : Edward Kmett <ekmett@gmail.com>
-- Stability : experimental
-- Portability : non-portable
--
----------------------------------------------------------------------------
module Text.Trifecta.Diagnostic.Err.State
( ErrState(..)
) where
import Data.Functor.Plus
import Data.Set as Set
import Data.Semigroup
import Text.Trifecta.Diagnostic.Err
import Text.Trifecta.Diagnostic.Rendering.Caret
data ErrState e = ErrState
{ errExpected :: !(Set (Careted String))
, errMessage :: !(Err e)
}
instance Functor ErrState where
fmap f (ErrState a b) = ErrState a (fmap f b)
instance Alt ErrState where
ErrState a b <!> ErrState a' b' = ErrState (a <> a') (b <> b')
{-# INLINE (<!>) #-}
instance Plus ErrState where
zero = ErrState mempty mempty
instance Semigroup (ErrState e) where
(<>) = (<!>)
instance Monoid (ErrState e) where
mempty = zero
mappend = (<!>)