gigaparsec-0.2.2.2: src/Text/Gigaparsec/Internal/Errors.hs
{-# LANGUAGE Trustworthy #-}
{-# LANGUAGE RecordWildCards, BangPatterns, NamedFieldPuns, CPP #-}
{-# OPTIONS_GHC -Wno-all-missed-specialisations #-}
{-# OPTIONS_HADDOCK hide #-}
#include "portable-unlifted.h"
module Text.Gigaparsec.Internal.Errors (
module Text.Gigaparsec.Internal.Errors,
CaretWidth(..), ExpectItem(..),
Error.presentationOffset, Error.isExpectedEmpty, DefuncHints(Blank)
) where
import Data.Set (Set)
import Text.Gigaparsec.Errors.ErrorBuilder (ErrorBuilder)
import Text.Gigaparsec.Internal.Errors.DefuncError (DefuncError)
import Text.Gigaparsec.Internal.Errors.DefuncError qualified as Error
import Text.Gigaparsec.Internal.Errors.DefuncHints (DefuncHints(Blank))
import Text.Gigaparsec.Internal.Errors.DefuncHints qualified as Hints
import Text.Gigaparsec.Internal.Errors.CaretControl (CaretWidth(FlexibleCaret, RigidCaret))
import Text.Gigaparsec.Internal.Errors.ErrorItem (ExpectItem(ExpectNamed, ExpectEndOfInput, ExpectRaw))
import Text.Gigaparsec.Internal.Errors.ParseError (fromParseError)
import Text.Gigaparsec.Internal.Errors.DefuncBuilders (asParseError)
CPP_import_PortableUnlifted
type Error :: UnliftedDatatype
type Error = DefuncError
type Hints :: UnliftedDatatype
type Hints = DefuncHints
{-# INLINE addError #-}
addError :: Hints -> Error -> Hints
addError = Hints.addError
{-# INLINE replaceHints #-}
replaceHints :: Set String -> Hints -> Hints
replaceHints = Hints.replace
{-# INLINABLE fromError #-}
fromError :: forall err. ErrorBuilder err => Maybe FilePath -> String -> Error -> err
fromError fp inp err = fromParseError fp inp (asParseError inp err)
{-# INLINE emptyErr #-}
emptyErr :: Word -> Word -> Word -> Word -> Error
emptyErr = Error.emptyError
{-# INLINE expectedErr #-}
expectedErr :: String -> Word -> Word -> Word -> Set ExpectItem -> Word -> Error
expectedErr _ = Error.expectedError
{-# INLINE specialisedErr #-}
specialisedErr :: Word -> Word -> Word -> [String] -> CaretWidth -> Error
specialisedErr = Error.specialisedError
{-# INLINE unexpectedErr #-}
unexpectedErr :: Word -> Word -> Word -> Set ExpectItem -> String -> CaretWidth -> Error
unexpectedErr = Error.unexpectedError
{-# INLINE labelErr #-}
labelErr :: Word -> Set String -> Error -> Error
labelErr = Error.label
--TODO: remove?
{-# INLINABLE explainErr #-}
explainErr :: Word -> String -> Error -> Error
explainErr !offset reason err
| offset == Error.presentationOffset err = addReason reason err
explainErr _ _ err = err
{-# INLINE addReason #-}
addReason :: String -> Error -> Error
addReason = Error.withReason
{-# INLINE amendErr #-}
amendErr :: Word -> Word -> Word -> Error -> Error
amendErr = Error.amend False
{-# INLINE partialAmendErr #-}
partialAmendErr :: Word -> Word -> Word -> Error -> Error
partialAmendErr = Error.amend True
{-# INLINE entrenchErr #-}
entrenchErr :: Error -> Error
entrenchErr = Error.entrench
{-# INLINE dislodgeErr #-}
dislodgeErr :: Word -> Error -> Error
dislodgeErr !w = Error.dislodge (fromIntegral w) --FIXME:
{-# INLINE setLexical #-}
setLexical :: Word -> Error -> Error
setLexical = Error.markAsLexical
{-# INLINE useHints #-}
useHints :: Hints -> Error -> Error
useHints = Error.withHints
{-# INLINE mergeErr #-}
mergeErr :: Error -> Error -> Error
mergeErr = Error.merge