{-# LANGUAGE CPP #-}
{-# LANGUAGE TemplateHaskell #-}
module Development.IDE.GHC.Compat.Error (
MsgEnvelope(..),
msgEnvelopeErrorL,
GhcMessage(..),
TcRnMessage (..),
TcRnMessageDetailed (..),
Hole(..),
stripTcRnMessageContext,
PsMessage(..),
DsMessage (..),
DriverMessage (..),
Diagnostic(..),
GhcHint (SuggestExtension),
LanguageExtensionHint (..),
_TcRnMessage,
_TcRnMessageWithCtx,
_GhcPsMessage,
_GhcDsMessage,
_GhcDriverMessage,
_ReportHoleError,
_TcRnIllegalWildcardInType,
_TcRnPartialTypeSignatures,
_TcRnMissingSignature,
_TcRnSolverReport,
_TcRnMessageWithInfo,
_TypeHole,
_ConstraintHole,
reportContextL,
reportContentL,
_MismatchMessage,
_TypeEqMismatchActual,
_TypeEqMismatchExpected,
) where
import Control.Lens
import Development.IDE.GHC.Compat (Type)
import GHC.Driver.Errors.Types
import GHC.HsToCore.Errors.Types
import GHC.Tc.Errors.Types
import GHC.Tc.Types.Constraint (Hole (..), HoleSort)
import GHC.Types.Error
_TcRnMessage :: Fold GhcMessage TcRnMessage
_TcRnMessage :: Fold GhcMessage TcRnMessage
_TcRnMessage = (TcRnMessage -> f TcRnMessage) -> GhcMessage -> f GhcMessage
Prism' GhcMessage TcRnMessage
_TcRnMessageWithCtx ((TcRnMessage -> f TcRnMessage) -> GhcMessage -> f GhcMessage)
-> ((TcRnMessage -> f TcRnMessage) -> TcRnMessage -> f TcRnMessage)
-> (TcRnMessage -> f TcRnMessage)
-> GhcMessage
-> f GhcMessage
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TcRnMessage -> TcRnMessage)
-> (TcRnMessage -> f TcRnMessage) -> TcRnMessage -> f TcRnMessage
forall (p :: * -> * -> *) (f :: * -> *) s a.
(Profunctor p, Contravariant f) =>
(s -> a) -> Optic' p f s a
to TcRnMessage -> TcRnMessage
stripTcRnMessageContext
_TcRnMessageWithCtx :: Prism' GhcMessage TcRnMessage
_TcRnMessageWithCtx :: Prism' GhcMessage TcRnMessage
_TcRnMessageWithCtx = (TcRnMessage -> GhcMessage)
-> (GhcMessage -> Maybe TcRnMessage)
-> Prism' GhcMessage TcRnMessage
forall b s a. (b -> s) -> (s -> Maybe a) -> Prism s s a b
prism' TcRnMessage -> GhcMessage
GhcTcRnMessage (\case
GhcTcRnMessage TcRnMessage
tcRnMsg -> TcRnMessage -> Maybe TcRnMessage
forall a. a -> Maybe a
Just TcRnMessage
tcRnMsg
GhcMessage
_ -> Maybe TcRnMessage
forall a. Maybe a
Nothing)
_GhcPsMessage :: Prism' GhcMessage PsMessage
_GhcPsMessage :: Prism' GhcMessage PsMessage
_GhcPsMessage = (PsMessage -> GhcMessage)
-> (GhcMessage -> Maybe PsMessage) -> Prism' GhcMessage PsMessage
forall b s a. (b -> s) -> (s -> Maybe a) -> Prism s s a b
prism' PsMessage -> GhcMessage
GhcPsMessage (\case
GhcPsMessage PsMessage
psMsg -> PsMessage -> Maybe PsMessage
forall a. a -> Maybe a
Just PsMessage
psMsg
GhcMessage
_ -> Maybe PsMessage
forall a. Maybe a
Nothing)
_GhcDsMessage :: Prism' GhcMessage DsMessage
_GhcDsMessage :: Prism' GhcMessage DsMessage
_GhcDsMessage = (DsMessage -> GhcMessage)
-> (GhcMessage -> Maybe DsMessage) -> Prism' GhcMessage DsMessage
forall b s a. (b -> s) -> (s -> Maybe a) -> Prism s s a b
prism' DsMessage -> GhcMessage
GhcDsMessage (\case
GhcDsMessage DsMessage
dsMsg -> DsMessage -> Maybe DsMessage
forall a. a -> Maybe a
Just DsMessage
dsMsg
GhcMessage
_ -> Maybe DsMessage
forall a. Maybe a
Nothing)
_GhcDriverMessage :: Prism' GhcMessage DriverMessage
_GhcDriverMessage :: Prism' GhcMessage DriverMessage
_GhcDriverMessage = (DriverMessage -> GhcMessage)
-> (GhcMessage -> Maybe DriverMessage)
-> Prism' GhcMessage DriverMessage
forall b s a. (b -> s) -> (s -> Maybe a) -> Prism s s a b
prism' DriverMessage -> GhcMessage
GhcDriverMessage (\case
GhcDriverMessage DriverMessage
driverMsg -> DriverMessage -> Maybe DriverMessage
forall a. a -> Maybe a
Just DriverMessage
driverMsg
GhcMessage
_ -> Maybe DriverMessage
forall a. Maybe a
Nothing)
stripTcRnMessageContext :: TcRnMessage -> TcRnMessage
stripTcRnMessageContext :: TcRnMessage -> TcRnMessage
stripTcRnMessageContext = \case
#if MIN_VERSION_ghc(9, 6, 1)
TcRnWithHsDocContext HsDocContext
_ TcRnMessage
tcMsg -> TcRnMessage -> TcRnMessage
stripTcRnMessageContext TcRnMessage
tcMsg
#endif
TcRnMessageWithInfo UnitState
_ (TcRnMessageDetailed ErrInfo
_ TcRnMessage
tcMsg) -> TcRnMessage -> TcRnMessage
stripTcRnMessageContext TcRnMessage
tcMsg
TcRnMessage
msg -> TcRnMessage
msg
msgEnvelopeErrorL :: Lens' (MsgEnvelope e) e
msgEnvelopeErrorL :: forall e (f :: * -> *).
Functor f =>
(e -> f e) -> MsgEnvelope e -> f (MsgEnvelope e)
msgEnvelopeErrorL = (MsgEnvelope e -> e)
-> (MsgEnvelope e -> e -> MsgEnvelope e)
-> Lens (MsgEnvelope e) (MsgEnvelope e) e e
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens MsgEnvelope e -> e
forall e. MsgEnvelope e -> e
errMsgDiagnostic (\MsgEnvelope e
envelope e
e -> MsgEnvelope e
envelope { errMsgDiagnostic = e } )