GHC.Types.SourceError

ghc-9.10.0.20240426: The GHC API

Safe Haskell | None
Language | GHC2021

GHC.Types.SourceError

Description

Source errors

Synopsis

- newtype SourceError = SourceError (Messages GhcMessage)
- mkSrcErr :: Messages GhcMessage -> SourceError
- srcErrorMessages :: SourceError -> Messages GhcMessage
- throwErrors :: MonadIO io => Messages GhcMessage -> io a
- throwOneError :: MonadIO io => MsgEnvelope GhcMessage -> io a
- handleSourceError :: MonadCatch m => (SourceError -> m a) -> m a -> m a

# Documentation

newtype SourceError Source #

A source error is an error that is caused by one or more errors in the source code. A `SourceError` is thrown by many functions in the compilation pipeline. Inside GHC these errors are merely printed via `log_action`, but API clients may treat them differently, for example, insert them into a list box. If you want the default behaviour, use the idiom:

    handleSourceError printExceptionAndWarnings $ do
      ... api calls that may fail ...

The `SourceError`s error messages can be accessed via `srcErrorMessages`. This list may be empty if the compiler failed due to `-Werror` (`Opt_WarnIsError`).

See `printExceptionAndWarnings` for more information on what to take care of when writing a custom error handler.

Constructors

SourceError (Messages GhcMessage) |

#### Instances

Instances details

Exception SourceError Source # |
Instance details Defined in GHC.Types.SourceError Methods toException :: SourceError -> SomeException # fromException :: SomeException -> Maybe SourceError # displayException :: SourceError -> String # backtraceDesired :: SourceError -> Bool #
Show SourceError Source # |
Instance details Defined in GHC.Types.SourceError Methods showsPrec :: Int -> SourceError -> ShowS # show :: SourceError -> String # showList :: [SourceError] -> ShowS #

mkSrcErr :: Messages GhcMessage -> SourceError Source #

srcErrorMessages :: SourceError -> Messages GhcMessage Source #

throwErrors :: MonadIO io => Messages GhcMessage -> io a Source #

throwOneError :: MonadIO io => MsgEnvelope GhcMessage -> io a Source #

handleSourceError Source #

Arguments

:: MonadCatch m |
=> (SourceError -> m a) | exception handler
-> m a | action to perform
-> m a |

Perform the given action and call the exception handler if the action throws a `SourceError`. See `SourceError` for more information.