ghc-9.6.0.20230210: The GHC API
Safe HaskellSafe-Inferred
LanguageHaskell2010

GHC.Utils.Panic.Plain

Description

Defines a simple exception type and utilities to throw it. The PlainGhcException type is a subset of the GhcException type. It omits the exception constructors that involve pretty-printing via SDoc.

There are two reasons for this:

  1. To avoid import cycles / use of boot files. GHC.Utils.Outputable has many transitive dependencies. To throw exceptions from these modules, the functions here can be used without introducing import cycles.
  2. To reduce the number of modules that need to be compiled to object code when loading GHC into GHCi. See #13101
Synopsis

Documentation

data PlainGhcException Source #

This type is very similar to GhcException, but it omits the constructors that involve pretty-printing via SDoc. Due to the implementation of fromException for GhcException, this type can be caught as a GhcException.

Note that this should only be used for throwing exceptions, not for catching, as GhcException will not be converted to this type when catching.

Constructors

PlainSignal Int

Some other fatal signal (SIGHUP,SIGTERM)

PlainUsageError String

Prints the short usage msg after the error

PlainCmdLineError String

A problem with the command line arguments, but don't print usage.

PlainPanic String

The impossible happened.

PlainSorry String

The user tickled something that's known not to work yet, but we're not counting it as a bug.

PlainInstallationError String

An installation problem.

PlainProgramError String

An error in the user's code, probably.

showPlainGhcException :: PlainGhcException -> ShowS Source #

Append a description of the given exception to this string.

panic :: HasCallStack => String -> a Source #

Panics and asserts.

sorry :: HasCallStack => String -> a Source #

Panics and asserts.

pgmError :: HasCallStack => String -> a Source #

Panics and asserts.

assertPanic :: String -> Int -> a Source #

Throw a failed assertion exception for a given filename and line number.

assert :: HasCallStack => Bool -> a -> a Source #

assertM :: (HasCallStack, Monad m) => m Bool -> m () Source #