ghc-lib-parser-9.10.1.20250103: The GHC API, decoupled from GHC versions

Safe Haskell | Ignore
Language | GHC2021

GHC.Core.TyCo.Ppr

Contents

- Precedence
- Pretty-printing types
- Pretty-printing coercions

Description

Pretty-printing types and coercions.

Synopsis

- newtype PprPrec = PprPrec Int
- topPrec :: PprPrec
- sigPrec :: PprPrec
- opPrec :: PprPrec
- funPrec :: PprPrec
- appPrec :: PprPrec
- maybeParen :: PprPrec -> PprPrec -> SDoc -> SDoc
- pprType :: Type -> SDoc
- pprParendType :: Type -> SDoc
- pprTidiedType :: Type -> SDoc
- pprPrecType :: PprPrec -> Type -> SDoc
- pprPrecTypeX :: TidyEnv -> PprPrec -> Type -> SDoc
- pprTypeApp :: TyCon -> [Type] -> SDoc
- pprTCvBndr :: ForAllTyBinder -> SDoc
- pprTCvBndrs :: [ForAllTyBinder] -> SDoc
- pprSigmaType :: Type -> SDoc
- pprTheta :: ThetaType -> SDoc
- pprParendTheta :: ThetaType -> SDoc
- pprForAll :: [ForAllTyBinder] -> SDoc
- pprUserForAll :: [ForAllTyBinder] -> SDoc
- pprTyVar :: TyVar -> SDoc
- pprTyVars :: [TyVar] -> SDoc
- pprThetaArrowTy :: ThetaType -> SDoc
- pprClassPred :: Class -> [Type] -> SDoc
- pprKind :: Kind -> SDoc
- pprParendKind :: Kind -> SDoc
- pprTyLit :: TyLit -> SDoc
- pprDataCons :: TyCon -> SDoc
- pprWithExplicitKindsWhen :: Bool -> SDoc -> SDoc
- pprWithTYPE :: Type -> SDoc
- pprSourceTyCon :: TyCon -> SDoc
- pprCo :: Coercion -> SDoc
- pprParendCo :: Coercion -> SDoc
- debugPprType :: Type -> SDoc

# Precedence

newtype PprPrec #

A general-purpose pretty-printing precedence type.

Constructors

PprPrec Int |

#### Instances

Instances details

Show PprPrec # |
Instance details Defined in GHC.Types.Basic Methods showsPrec :: Int -> PprPrec -> ShowS # show :: PprPrec -> String # showList :: [PprPrec] -> ShowS #
Eq PprPrec # |
Instance details Defined in GHC.Types.Basic Methods (==) :: PprPrec -> PprPrec -> Bool # (/=) :: PprPrec -> PprPrec -> Bool #
Ord PprPrec # |
Instance details Defined in GHC.Types.Basic Methods compare :: PprPrec -> PprPrec -> Ordering # (<) :: PprPrec -> PprPrec -> Bool # (<=) :: PprPrec -> PprPrec -> Bool # (>) :: PprPrec -> PprPrec -> Bool # (>=) :: PprPrec -> PprPrec -> Bool # max :: PprPrec -> PprPrec -> PprPrec # min :: PprPrec -> PprPrec -> PprPrec #

topPrec :: PprPrec #

sigPrec :: PprPrec #

opPrec :: PprPrec #

funPrec :: PprPrec #

appPrec :: PprPrec #

maybeParen :: PprPrec -> PprPrec -> SDoc -> SDoc #

# Pretty-printing types

pprType :: Type -> SDoc #

pprParendType :: Type -> SDoc #

pprTidiedType :: Type -> SDoc #

pprPrecType :: PprPrec -> Type -> SDoc #

pprPrecTypeX :: TidyEnv -> PprPrec -> Type -> SDoc #

pprTypeApp :: TyCon -> [Type] -> SDoc #

pprTCvBndr :: ForAllTyBinder -> SDoc #

pprTCvBndrs :: [ForAllTyBinder] -> SDoc #

pprSigmaType :: Type -> SDoc #

pprTheta :: ThetaType -> SDoc #

pprParendTheta :: ThetaType -> SDoc #

pprForAll :: [ForAllTyBinder] -> SDoc #

pprUserForAll :: [ForAllTyBinder] -> SDoc #

Print a user-level forall; see `Note [When to print foralls]` in GHC.Iface.Type.

pprTyVar :: TyVar -> SDoc #

pprTyVars :: [TyVar] -> SDoc #

pprThetaArrowTy :: ThetaType -> SDoc #

pprClassPred :: Class -> [Type] -> SDoc #

pprKind :: Kind -> SDoc #

pprParendKind :: Kind -> SDoc #

pprTyLit :: TyLit -> SDoc #

pprDataCons :: TyCon -> SDoc #

pprWithExplicitKindsWhen :: Bool -> SDoc -> SDoc #

Display all kind information (with `-fprint-explicit-kinds`) when the provided `Bool` argument is `True`. See `Note [Kind arguments in error messages]` in GHC.Tc.Errors.

pprWithTYPE :: Type -> SDoc #

This variant preserves any use of TYPE in a type, effectively locally setting -fprint-explicit-runtime-reps.

pprSourceTyCon :: TyCon -> SDoc #

Pretty prints a `TyCon`, using the family instance in case of a representation tycon. For example:

    data T [a] = ...

In that case we want to print `T [a]`, where `T` is the family `TyCon`

# Pretty-printing coercions

pprCo :: Coercion -> SDoc #

pprParendCo :: Coercion -> SDoc #

debugPprType :: Type -> SDoc #

debugPprType is a simple pretty printer that prints a type without going through IfaceType. It does not format as prettily as the normal route, but it's much more direct, and that can be useful for debugging. E.g. with -dppr-debug it prints the kind on type-variable occurrences which the normal route fundamentally cannot do.