GHC.Iface.Type

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

Safe Haskell | Ignore
Language | GHC2021

GHC.Iface.Type

Synopsis

- type IfExtName = Name
- type IfLclName = FastString
- data IfaceType
  - = IfaceFreeTyVar TyVar
  - | IfaceTyVar IfLclName
  - | IfaceLitTy IfaceTyLit
  - | IfaceAppTy IfaceType IfaceAppArgs
  - | IfaceFunTy FunTyFlag IfaceMult IfaceType IfaceType
  - | IfaceForAllTy IfaceForAllBndr IfaceType
  - | IfaceTyConApp IfaceTyCon IfaceAppArgs
  - | IfaceCastTy IfaceType IfaceCoercion
  - | IfaceCoercionTy IfaceCoercion
  - | IfaceTupleTy TupleSort PromotionFlag IfaceAppArgs
- type IfacePredType = IfaceType
- type IfaceKind = IfaceType
- data IfaceCoercion
  - = IfaceReflCo IfaceType
  - | IfaceGReflCo Role IfaceType IfaceMCoercion
  - | IfaceFunCo Role IfaceCoercion IfaceCoercion IfaceCoercion
  - | IfaceTyConAppCo Role IfaceTyCon [IfaceCoercion]
  - | IfaceAppCo IfaceCoercion IfaceCoercion
  - | IfaceForAllCo IfaceBndr !ForAllTyFlag !ForAllTyFlag IfaceCoercion IfaceCoercion
  - | IfaceCoVarCo IfLclName
  - | IfaceAxiomInstCo IfExtName BranchIndex [IfaceCoercion]
  - | IfaceAxiomRuleCo IfLclName [IfaceCoercion]
  - | IfaceUnivCo IfaceUnivCoProv Role IfaceType IfaceType
  - | IfaceSymCo IfaceCoercion
  - | IfaceTransCo IfaceCoercion IfaceCoercion
  - | IfaceSelCo CoSel IfaceCoercion
  - | IfaceLRCo LeftOrRight IfaceCoercion
  - | IfaceInstCo IfaceCoercion IfaceCoercion
  - | IfaceKindCo IfaceCoercion
  - | IfaceSubCo IfaceCoercion
  - | IfaceFreeCoVar CoVar
  - | IfaceHoleCo CoVar
- data IfaceMCoercion
  - = IfaceMRefl
  - | IfaceMCo IfaceCoercion
- data IfaceUnivCoProv
  - = IfacePhantomProv IfaceCoercion
  - | IfaceProofIrrelProv IfaceCoercion
  - | IfacePluginProv String
- type IfaceMult = IfaceType
- data IfaceTyCon = IfaceTyCon {
  - ifaceTyConName :: IfExtName
  - ifaceTyConInfo :: IfaceTyConInfo
  }
- data IfaceTyConInfo = IfaceTyConInfo {
  - ifaceTyConIsPromoted :: PromotionFlag
  - ifaceTyConSort :: IfaceTyConSort
  }
- mkIfaceTyConInfo :: PromotionFlag -> IfaceTyConSort -> IfaceTyConInfo
- data IfaceTyConSort
  - = IfaceNormalTyCon
  - | IfaceTupleTyCon !Arity !TupleSort
  - | IfaceSumTyCon !Arity
  - | IfaceEqualityTyCon
- data IfaceTyLit
  - = IfaceNumTyLit Integer
  - | IfaceStrTyLit FastString
  - | IfaceCharTyLit Char
- data IfaceAppArgs
  - = IA_Nil
  - | IA_Arg IfaceType ForAllTyFlag IfaceAppArgs
- type IfaceContext = [IfacePredType]
- data IfaceBndr
  - = IfaceIdBndr !IfaceIdBndr
  - | IfaceTvBndr !IfaceTvBndr
- data IfaceOneShot
  - = IfaceNoOneShot
  - | IfaceOneShot
- type IfaceLamBndr = (IfaceBndr, IfaceOneShot)
- type IfaceTvBndr = (IfLclName, IfaceKind)
- type IfaceIdBndr = (IfaceType, IfLclName, IfaceType)
- type IfaceTyConBinder = VarBndr IfaceBndr TyConBndrVis
- type IfaceForAllSpecBndr = VarBndr IfaceBndr Specificity
- type IfaceForAllBndr = VarBndr IfaceBndr ForAllTyFlag
- data ForAllTyFlag where
  - Invisible !Specificity
  - Required
  - pattern Specified :: ForAllTyFlag
  - pattern Inferred :: ForAllTyFlag
- data FunTyFlag
  - = FTF_T_T
  - | FTF_T_C
  - | FTF_C_T
  - | FTF_C_C
- data ShowForAllFlag
  - = ShowForAllMust
  - | ShowForAllWhen
- data ShowSub = ShowSub {
  - ss_how_much :: ShowHowMuch
  - ss_forall :: ShowForAllFlag
  }
- data ShowHowMuch
  - = ShowHeader AltPpr
  - | ShowSome (Maybe (OccName -> Bool)) AltPpr
  - | ShowIface
- newtype AltPpr = AltPpr (Maybe (OccName -> SDoc))
- mkIfaceForAllTvBndr :: ForAllTyFlag -> IfaceTvBndr -> IfaceForAllBndr
- mkIfaceTyConKind :: [IfaceTyConBinder] -> IfaceKind -> IfaceKind
- ifaceForAllSpecToBndrs :: [IfaceForAllSpecBndr] -> [IfaceForAllBndr]
- ifaceForAllSpecToBndr :: IfaceForAllSpecBndr -> IfaceForAllBndr
- ifForAllBndrVar :: IfaceForAllBndr -> IfaceBndr
- ifForAllBndrName :: IfaceForAllBndr -> IfLclName
- ifaceBndrName :: IfaceBndr -> IfLclName
- ifTyConBinderVar :: IfaceTyConBinder -> IfaceBndr
- ifTyConBinderName :: IfaceTyConBinder -> IfLclName
- isIfaceLiftedTypeKind :: IfaceKind -> Bool
- appArgsIfaceTypes :: IfaceAppArgs -> [IfaceType]
- appArgsIfaceTypesForAllTyFlags :: IfaceAppArgs -> [(IfaceType, ForAllTyFlag)]
- newtype SuppressBndrSig = SuppressBndrSig Bool
- newtype UseBndrParens = UseBndrParens Bool
- newtype PrintExplicitKinds = PrintExplicitKinds Bool
- pprIfaceType :: IfaceType -> SDoc
- pprParendIfaceType :: IfaceType -> SDoc
- pprPrecIfaceType :: PprPrec -> IfaceType -> SDoc
- pprIfaceContext :: PprPrec -> [IfacePredType] -> SDoc
- pprIfaceContextArr :: [IfacePredType] -> SDoc
- pprIfaceIdBndr :: IfaceIdBndr -> SDoc
- pprIfaceLamBndr :: IfaceLamBndr -> SDoc
- pprIfaceTvBndr :: IfaceTvBndr -> SuppressBndrSig -> UseBndrParens -> SDoc
- pprIfaceTyConBinders :: SuppressBndrSig -> [IfaceTyConBinder] -> SDoc
- pprIfaceBndrs :: [IfaceBndr] -> SDoc
- pprIfaceAppArgs :: IfaceAppArgs -> SDoc
- pprParendIfaceAppArgs :: IfaceAppArgs -> SDoc
- pprIfaceForAllPart :: [IfaceForAllBndr] -> [IfacePredType] -> SDoc -> SDoc
- pprIfaceForAllPartMust :: [IfaceForAllBndr] -> [IfacePredType] -> SDoc -> SDoc
- pprIfaceForAll :: [IfaceForAllBndr] -> SDoc
- pprIfaceSigmaType :: ShowForAllFlag -> IfaceType -> SDoc
- pprIfaceTyLit :: IfaceTyLit -> SDoc
- pprIfaceCoercion :: IfaceCoercion -> SDoc
- pprParendIfaceCoercion :: IfaceCoercion -> SDoc
- splitIfaceSigmaTy :: IfaceType -> ([IfaceForAllBndr], [IfacePredType], IfaceType)
- pprIfaceTypeApp :: PprPrec -> IfaceTyCon -> IfaceAppArgs -> SDoc
- pprUserIfaceForAll :: [IfaceForAllBndr] -> SDoc
- pprIfaceCoTcApp :: PprPrec -> IfaceTyCon -> [IfaceCoercion] -> SDoc
- pprTyTcApp :: PprPrec -> IfaceTyCon -> IfaceAppArgs -> SDoc
- pprIfacePrefixApp :: PprPrec -> SDoc -> [SDoc] -> SDoc
- isIfaceRhoType :: IfaceType -> Bool
- suppressIfaceInvisibles :: PrintExplicitKinds -> [IfaceTyConBinder] -> [a] -> [a]
- stripIfaceInvisVars :: PrintExplicitKinds -> [IfaceTyConBinder] -> [IfaceTyConBinder]
- stripInvisArgs :: PrintExplicitKinds -> IfaceAppArgs -> IfaceAppArgs
- mkIfaceTySubst :: [(IfLclName, IfaceType)] -> IfaceTySubst
- substIfaceTyVar :: IfaceTySubst -> IfLclName -> IfaceType
- substIfaceAppArgs :: IfaceTySubst -> IfaceAppArgs -> IfaceAppArgs
- inDomIfaceTySubst :: IfaceTySubst -> IfaceTvBndr -> Bool
- many_ty :: IfaceType
- pprTypeArrow :: FunTyFlag -> IfaceMult -> SDoc

# Documentation

type IfExtName = Name #

type IfLclName = FastString #

data IfaceType #

A kind of universal type, used for types and kinds.

Any time a `Type` is pretty-printed, it is first converted to an `IfaceType` before being printed. See Note [Pretty printing via Iface syntax] in GHC.Types.TyThing.Ppr

Constructors

IfaceFreeTyVar TyVar |
IfaceTyVar IfLclName |
IfaceLitTy IfaceTyLit |
IfaceAppTy IfaceType IfaceAppArgs |
IfaceFunTy FunTyFlag IfaceMult IfaceType IfaceType |
IfaceForAllTy IfaceForAllBndr IfaceType |
IfaceTyConApp IfaceTyCon IfaceAppArgs |
IfaceCastTy IfaceType IfaceCoercion |
IfaceCoercionTy IfaceCoercion |
IfaceTupleTy TupleSort PromotionFlag IfaceAppArgs |

#### Instances

Instances details

NFData IfaceType # |
Instance details Defined in GHC.Iface.Type Methods rnf :: IfaceType -> () #
Binary IfaceType # |
Instance details Defined in GHC.Iface.Type Methods put_ :: BinHandle -> IfaceType -> IO () # put :: BinHandle -> IfaceType -> IO (Bin IfaceType) # get :: BinHandle -> IO IfaceType #
Outputable IfaceType # |
Instance details Defined in GHC.Iface.Type Methods ppr :: IfaceType -> SDoc #
Binary (DefMethSpec IfaceType) # |
Instance details Defined in GHC.Iface.Type Methods put_ :: BinHandle -> DefMethSpec IfaceType -> IO () # put :: BinHandle -> DefMethSpec IfaceType -> IO (Bin (DefMethSpec IfaceType)) # get :: BinHandle -> IO (DefMethSpec IfaceType) #

type IfacePredType = IfaceType #

type IfaceKind = IfaceType #

data IfaceCoercion #

Constructors

IfaceReflCo IfaceType |
IfaceGReflCo Role IfaceType IfaceMCoercion |
IfaceFunCo Role IfaceCoercion IfaceCoercion IfaceCoercion |
IfaceTyConAppCo Role IfaceTyCon [IfaceCoercion] |
IfaceAppCo IfaceCoercion IfaceCoercion |
IfaceForAllCo IfaceBndr !ForAllTyFlag !ForAllTyFlag IfaceCoercion IfaceCoercion |
IfaceCoVarCo IfLclName |
IfaceAxiomInstCo IfExtName BranchIndex [IfaceCoercion] |
IfaceAxiomRuleCo IfLclName [IfaceCoercion] |
IfaceUnivCo IfaceUnivCoProv Role IfaceType IfaceType |
IfaceSymCo IfaceCoercion |
IfaceTransCo IfaceCoercion IfaceCoercion |
IfaceSelCo CoSel IfaceCoercion |
IfaceLRCo LeftOrRight IfaceCoercion |
IfaceInstCo IfaceCoercion IfaceCoercion |
IfaceKindCo IfaceCoercion |
IfaceSubCo IfaceCoercion |
IfaceFreeCoVar CoVar |
IfaceHoleCo CoVar | See Note [Holes in IfaceCoercion]

#### Instances

Instances details

NFData IfaceCoercion # |
Instance details Defined in GHC.Iface.Type Methods rnf :: IfaceCoercion -> () #
Binary IfaceCoercion # |
Instance details Defined in GHC.Iface.Type Methods put_ :: BinHandle -> IfaceCoercion -> IO () # put :: BinHandle -> IfaceCoercion -> IO (Bin IfaceCoercion) # get :: BinHandle -> IO IfaceCoercion #
Outputable IfaceCoercion # |
Instance details Defined in GHC.Iface.Type Methods ppr :: IfaceCoercion -> SDoc #

data IfaceMCoercion #

Constructors

IfaceMRefl |
IfaceMCo IfaceCoercion |

#### Instances

Instances details

NFData IfaceMCoercion # |
Instance details Defined in GHC.Iface.Type Methods rnf :: IfaceMCoercion -> () #
Binary IfaceMCoercion # |
Instance details Defined in GHC.Iface.Type Methods put_ :: BinHandle -> IfaceMCoercion -> IO () # put :: BinHandle -> IfaceMCoercion -> IO (Bin IfaceMCoercion) # get :: BinHandle -> IO IfaceMCoercion #

data IfaceUnivCoProv #

Constructors

IfacePhantomProv IfaceCoercion |
IfaceProofIrrelProv IfaceCoercion |
IfacePluginProv String |

#### Instances

Instances details

NFData IfaceUnivCoProv # |
Instance details Defined in GHC.Iface.Type Methods rnf :: IfaceUnivCoProv -> () #
Binary IfaceUnivCoProv # |
Instance details Defined in GHC.Iface.Type Methods put_ :: BinHandle -> IfaceUnivCoProv -> IO () # put :: BinHandle -> IfaceUnivCoProv -> IO (Bin IfaceUnivCoProv) # get :: BinHandle -> IO IfaceUnivCoProv #

type IfaceMult = IfaceType #

data IfaceTyCon #

Constructors

IfaceTyCon |
Fields ifaceTyConName :: IfExtName ifaceTyConInfo :: IfaceTyConInfo

#### Instances

Instances details

NFData IfaceTyCon # |
Instance details Defined in GHC.Iface.Type Methods rnf :: IfaceTyCon -> () #
Binary IfaceTyCon # |
Instance details Defined in GHC.Iface.Type Methods put_ :: BinHandle -> IfaceTyCon -> IO () # put :: BinHandle -> IfaceTyCon -> IO (Bin IfaceTyCon) # get :: BinHandle -> IO IfaceTyCon #
Outputable IfaceTyCon # |
Instance details Defined in GHC.Iface.Type Methods ppr :: IfaceTyCon -> SDoc #
Eq IfaceTyCon # |
Instance details Defined in GHC.Iface.Type Methods (==) :: IfaceTyCon -> IfaceTyCon -> Bool # (/=) :: IfaceTyCon -> IfaceTyCon -> Bool #

data IfaceTyConInfo #

Constructors

IfaceTyConInfo |
Fields ifaceTyConIsPromoted :: PromotionFlag ifaceTyConSort :: IfaceTyConSort

#### Instances

Instances details

NFData IfaceTyConInfo # |
Instance details Defined in GHC.Iface.Type Methods rnf :: IfaceTyConInfo -> () #
Binary IfaceTyConInfo # |
Instance details Defined in GHC.Iface.Type Methods put_ :: BinHandle -> IfaceTyConInfo -> IO () # put :: BinHandle -> IfaceTyConInfo -> IO (Bin IfaceTyConInfo) # get :: BinHandle -> IO IfaceTyConInfo #
Outputable IfaceTyConInfo # |
Instance details Defined in GHC.Iface.Type Methods ppr :: IfaceTyConInfo -> SDoc #
Eq IfaceTyConInfo # |
Instance details Defined in GHC.Iface.Type Methods (==) :: IfaceTyConInfo -> IfaceTyConInfo -> Bool # (/=) :: IfaceTyConInfo -> IfaceTyConInfo -> Bool #

mkIfaceTyConInfo :: PromotionFlag -> IfaceTyConSort -> IfaceTyConInfo #

data IfaceTyConSort #

The various types of TyCons which have special, built-in syntax.

Constructors

IfaceNormalTyCon | a regular tycon
IfaceTupleTyCon !Arity !TupleSort | a tuple, e.g. `(a, b, c)` or `(#a, b, c#)`. The arity is the tuple width, not the tycon arity (which is twice the width in the case of unboxed tuples).
IfaceSumTyCon !Arity | an unboxed sum, e.g. `(# a | b | c #)`
IfaceEqualityTyCon | A heterogeneous equality TyCon (i.e. eqPrimTyCon, eqReprPrimTyCon, heqTyCon) that is actually being applied to two types of the same kind. This affects pretty-printing only: see Note [Equality predicates in IfaceType]

#### Instances

Instances details

NFData IfaceTyConSort # |
Instance details Defined in GHC.Iface.Type Methods rnf :: IfaceTyConSort -> () #
Binary IfaceTyConSort # |
Instance details Defined in GHC.Iface.Type Methods put_ :: BinHandle -> IfaceTyConSort -> IO () # put :: BinHandle -> IfaceTyConSort -> IO (Bin IfaceTyConSort) # get :: BinHandle -> IO IfaceTyConSort #
Outputable IfaceTyConSort # |
Instance details Defined in GHC.Iface.Type Methods ppr :: IfaceTyConSort -> SDoc #
Eq IfaceTyConSort # |
Instance details Defined in GHC.Iface.Type Methods (==) :: IfaceTyConSort -> IfaceTyConSort -> Bool # (/=) :: IfaceTyConSort -> IfaceTyConSort -> Bool #

data IfaceTyLit #

Constructors

IfaceNumTyLit Integer |
IfaceStrTyLit FastString |
IfaceCharTyLit Char |

#### Instances

Instances details

NFData IfaceTyLit # |
Instance details Defined in GHC.Iface.Type Methods rnf :: IfaceTyLit -> () #
Binary IfaceTyLit # |
Instance details Defined in GHC.Iface.Type Methods put_ :: BinHandle -> IfaceTyLit -> IO () # put :: BinHandle -> IfaceTyLit -> IO (Bin IfaceTyLit) # get :: BinHandle -> IO IfaceTyLit #
Outputable IfaceTyLit # |
Instance details Defined in GHC.Iface.Type Methods ppr :: IfaceTyLit -> SDoc #
Eq IfaceTyLit # |
Instance details Defined in GHC.Iface.Type Methods (==) :: IfaceTyLit -> IfaceTyLit -> Bool # (/=) :: IfaceTyLit -> IfaceTyLit -> Bool #

data IfaceAppArgs #

Stores the arguments in a type application as a list. See `Note [Suppressing invisible arguments]`.

Constructors

IA_Nil |
IA_Arg IfaceType ForAllTyFlag IfaceAppArgs |

#### Instances

Instances details

NFData IfaceAppArgs # |
Instance details Defined in GHC.Iface.Type Methods rnf :: IfaceAppArgs -> () #
Monoid IfaceAppArgs # |
Instance details Defined in GHC.Iface.Type Methods mempty :: IfaceAppArgs # mappend :: IfaceAppArgs -> IfaceAppArgs -> IfaceAppArgs # mconcat :: [IfaceAppArgs] -> IfaceAppArgs #
Semigroup IfaceAppArgs # |
Instance details Defined in GHC.Iface.Type Methods (<>) :: IfaceAppArgs -> IfaceAppArgs -> IfaceAppArgs # sconcat :: NonEmpty IfaceAppArgs -> IfaceAppArgs # stimes :: Integral b => b -> IfaceAppArgs -> IfaceAppArgs #
Binary IfaceAppArgs # |
Instance details Defined in GHC.Iface.Type Methods put_ :: BinHandle -> IfaceAppArgs -> IO () # put :: BinHandle -> IfaceAppArgs -> IO (Bin IfaceAppArgs) # get :: BinHandle -> IO IfaceAppArgs #
Outputable IfaceAppArgs # |
Instance details Defined in GHC.Iface.Type Methods ppr :: IfaceAppArgs -> SDoc #

type IfaceContext = [IfacePredType] #

data IfaceBndr #

Constructors

IfaceIdBndr !IfaceIdBndr |
IfaceTvBndr !IfaceTvBndr |

#### Instances

Instances details

NFData IfaceBndr # |
Instance details Defined in GHC.Iface.Type Methods rnf :: IfaceBndr -> () #
Binary IfaceBndr # |
Instance details Defined in GHC.Iface.Type Methods put_ :: BinHandle -> IfaceBndr -> IO () # put :: BinHandle -> IfaceBndr -> IO (Bin IfaceBndr) # get :: BinHandle -> IO IfaceBndr #
Outputable IfaceBndr # |
Instance details Defined in GHC.Iface.Type Methods ppr :: IfaceBndr -> SDoc #

data IfaceOneShot #

Constructors

IfaceNoOneShot |
IfaceOneShot |

#### Instances

Instances details

NFData IfaceOneShot # |
Instance details Defined in GHC.Iface.Type Methods rnf :: IfaceOneShot -> () #
Binary IfaceOneShot # |
Instance details Defined in GHC.Iface.Type Methods put_ :: BinHandle -> IfaceOneShot -> IO () # put :: BinHandle -> IfaceOneShot -> IO (Bin IfaceOneShot) # get :: BinHandle -> IO IfaceOneShot #
Outputable IfaceOneShot # |
Instance details Defined in GHC.Iface.Type Methods ppr :: IfaceOneShot -> SDoc #

type IfaceLamBndr = (IfaceBndr, IfaceOneShot) #

type IfaceTvBndr = (IfLclName, IfaceKind) #

type IfaceIdBndr = (IfaceType, IfLclName, IfaceType) #

type IfaceTyConBinder = VarBndr IfaceBndr TyConBndrVis #

type IfaceForAllSpecBndr = VarBndr IfaceBndr Specificity #

type IfaceForAllBndr = VarBndr IfaceBndr ForAllTyFlag #

data ForAllTyFlag #

ForAllTyFlag

Is something required to appear in source Haskell (`Required`), permitted by request (`Specified`) (visible type application), or prohibited entirely from appearing in source Haskell (`Inferred`)? See Note [VarBndrs, ForAllTyBinders, TyConBinders, and visibility] in GHC.Core.TyCo.Rep

Constructors

Invisible !Specificity |
Required |

Bundled Patterns

pattern Specified :: ForAllTyFlag |
pattern Inferred :: ForAllTyFlag |

#### Instances

Instances details

NFData ForAllTyFlag # |
Instance details Defined in GHC.Types.Var Methods rnf :: ForAllTyFlag -> () #
Data ForAllTyFlag # |
Instance details Defined in GHC.Types.Var Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ForAllTyFlag -> c ForAllTyFlag # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ForAllTyFlag # toConstr :: ForAllTyFlag -> Constr # dataTypeOf :: ForAllTyFlag -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ForAllTyFlag) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ForAllTyFlag) # gmapT :: (forall b. Data b => b -> b) -> ForAllTyFlag -> ForAllTyFlag # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ForAllTyFlag -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ForAllTyFlag -> r # gmapQ :: (forall d. Data d => d -> u) -> ForAllTyFlag -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> ForAllTyFlag -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> ForAllTyFlag -> m ForAllTyFlag # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ForAllTyFlag -> m ForAllTyFlag # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ForAllTyFlag -> m ForAllTyFlag #
Binary ForAllTyFlag # |
Instance details Defined in GHC.Types.Var Methods put_ :: BinHandle -> ForAllTyFlag -> IO () # put :: BinHandle -> ForAllTyFlag -> IO (Bin ForAllTyFlag) # get :: BinHandle -> IO ForAllTyFlag #
Outputable ForAllTyFlag # |
Instance details Defined in GHC.Types.Var Methods ppr :: ForAllTyFlag -> SDoc #
Eq ForAllTyFlag # |
Instance details Defined in GHC.Types.Var Methods (==) :: ForAllTyFlag -> ForAllTyFlag -> Bool # (/=) :: ForAllTyFlag -> ForAllTyFlag -> Bool #
Ord ForAllTyFlag # |
Instance details Defined in GHC.Types.Var Methods compare :: ForAllTyFlag -> ForAllTyFlag -> Ordering # (<) :: ForAllTyFlag -> ForAllTyFlag -> Bool # (<=) :: ForAllTyFlag -> ForAllTyFlag -> Bool # (>) :: ForAllTyFlag -> ForAllTyFlag -> Bool # (>=) :: ForAllTyFlag -> ForAllTyFlag -> Bool # max :: ForAllTyFlag -> ForAllTyFlag -> ForAllTyFlag # min :: ForAllTyFlag -> ForAllTyFlag -> ForAllTyFlag #
Outputable tv => Outputable (VarBndr tv ForAllTyFlag) # |
Instance details Defined in GHC.Types.Var Methods ppr :: VarBndr tv ForAllTyFlag -> SDoc #

data FunTyFlag #

The non-dependent version of `ForAllTyFlag`. See Note [FunTyFlag] Appears here partly so that it's together with its friends ForAllTyFlag and ForallVisFlag, but also because it is used in IfaceType, rather early in the compilation chain

Constructors

FTF_T_T |
FTF_T_C |
FTF_C_T |
FTF_C_C |

#### Instances

Instances details

Data FunTyFlag # |
Instance details Defined in GHC.Types.Var Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> FunTyFlag -> c FunTyFlag # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c FunTyFlag # toConstr :: FunTyFlag -> Constr # dataTypeOf :: FunTyFlag -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c FunTyFlag) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c FunTyFlag) # gmapT :: (forall b. Data b => b -> b) -> FunTyFlag -> FunTyFlag # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> FunTyFlag -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> FunTyFlag -> r # gmapQ :: (forall d. Data d => d -> u) -> FunTyFlag -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> FunTyFlag -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> FunTyFlag -> m FunTyFlag # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> FunTyFlag -> m FunTyFlag # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> FunTyFlag -> m FunTyFlag #
Binary FunTyFlag # |
Instance details Defined in GHC.Types.Var Methods put_ :: BinHandle -> FunTyFlag -> IO () # put :: BinHandle -> FunTyFlag -> IO (Bin FunTyFlag) # get :: BinHandle -> IO FunTyFlag #
Outputable FunTyFlag # |
Instance details Defined in GHC.Types.Var Methods ppr :: FunTyFlag -> SDoc #
Eq FunTyFlag # |
Instance details Defined in GHC.Types.Var Methods (==) :: FunTyFlag -> FunTyFlag -> Bool # (/=) :: FunTyFlag -> FunTyFlag -> Bool #
Ord FunTyFlag # |
Instance details Defined in GHC.Types.Var Methods compare :: FunTyFlag -> FunTyFlag -> Ordering # (<) :: FunTyFlag -> FunTyFlag -> Bool # (<=) :: FunTyFlag -> FunTyFlag -> Bool # (>) :: FunTyFlag -> FunTyFlag -> Bool # (>=) :: FunTyFlag -> FunTyFlag -> Bool # max :: FunTyFlag -> FunTyFlag -> FunTyFlag # min :: FunTyFlag -> FunTyFlag -> FunTyFlag #

data ShowForAllFlag #

Show forall flag

Unconditionally show the forall quantifier with (`ShowForAllMust`) or when (`ShowForAllWhen`) the names used are free in the binder or when compiling with -fprint-explicit-foralls.

Constructors

ShowForAllMust |
ShowForAllWhen |

data ShowSub #

Constructors

ShowSub |
Fields ss_how_much :: ShowHowMuch ss_forall :: ShowForAllFlag

data ShowHowMuch #

Constructors

ShowHeader AltPpr | Header information only, not rhs
ShowSome (Maybe (OccName -> Bool)) AltPpr | Show the declaration and its RHS. The `Maybe` predicate allows filtering of the sub-components which should be printing; any sub-components filtered out will be elided with `...`.
ShowIface | Everything including GHC-internal information (used in --show-iface)

#### Instances

Instances details

Outputable ShowHowMuch # |
Instance details Defined in GHC.Iface.Type Methods ppr :: ShowHowMuch -> SDoc #

newtype AltPpr #

Constructors

AltPpr (Maybe (OccName -> SDoc)) |

mkIfaceForAllTvBndr :: ForAllTyFlag -> IfaceTvBndr -> IfaceForAllBndr #

Make an `IfaceForAllBndr` from an `IfaceTvBndr`.

mkIfaceTyConKind :: [IfaceTyConBinder] -> IfaceKind -> IfaceKind #

Build the `tyConKind` from the binders and the result kind. Keep in sync with `mkTyConKind` in GHC.Core.TyCon.

ifaceForAllSpecToBndrs :: [IfaceForAllSpecBndr] -> [IfaceForAllBndr] #

ifaceForAllSpecToBndr :: IfaceForAllSpecBndr -> IfaceForAllBndr #

ifForAllBndrVar :: IfaceForAllBndr -> IfaceBndr #

Extract an `IfaceBndr` from an `IfaceForAllBndr`.

ifForAllBndrName :: IfaceForAllBndr -> IfLclName #

Extract the variable name from an `IfaceForAllBndr`.

ifaceBndrName :: IfaceBndr -> IfLclName #

ifTyConBinderVar :: IfaceTyConBinder -> IfaceBndr #

Extract an `IfaceBndr` from an `IfaceTyConBinder`.

ifTyConBinderName :: IfaceTyConBinder -> IfLclName #

Extract the variable name from an `IfaceTyConBinder`.

isIfaceLiftedTypeKind :: IfaceKind -> Bool #

Returns true for Type or (TYPE LiftedRep)

appArgsIfaceTypes :: IfaceAppArgs -> [IfaceType] #

appArgsIfaceTypesForAllTyFlags :: IfaceAppArgs -> [(IfaceType, ForAllTyFlag)] #

newtype SuppressBndrSig #

Do we want to suppress kind annotations on binders? See Note [Suppressing binder signatures]

Constructors

SuppressBndrSig Bool |

newtype UseBndrParens #

Constructors

UseBndrParens Bool |

newtype PrintExplicitKinds #

Constructors

PrintExplicitKinds Bool |

pprIfaceType :: IfaceType -> SDoc #

pprParendIfaceType :: IfaceType -> SDoc #

pprPrecIfaceType :: PprPrec -> IfaceType -> SDoc #

pprIfaceContext :: PprPrec -> [IfacePredType] -> SDoc #

Prints a context or `()` if empty You give it the context precedence

pprIfaceContextArr :: [IfacePredType] -> SDoc #

Prints "(C a, D b) =>", including the arrow. Used when we want to print a context in a type, so we use `funPrec` to decide whether to parenthesise a singleton predicate; e.g. Num a => a -> a

pprIfaceIdBndr :: IfaceIdBndr -> SDoc #

pprIfaceLamBndr :: IfaceLamBndr -> SDoc #

pprIfaceTvBndr :: IfaceTvBndr -> SuppressBndrSig -> UseBndrParens -> SDoc #

pprIfaceTyConBinders :: SuppressBndrSig -> [IfaceTyConBinder] -> SDoc #

pprIfaceBndrs :: [IfaceBndr] -> SDoc #

pprIfaceAppArgs :: IfaceAppArgs -> SDoc #

pprParendIfaceAppArgs :: IfaceAppArgs -> SDoc #

pprIfaceForAllPart :: [IfaceForAllBndr] -> [IfacePredType] -> SDoc -> SDoc #

pprIfaceForAllPartMust :: [IfaceForAllBndr] -> [IfacePredType] -> SDoc -> SDoc #

Like `pprIfaceForAllPart`, but always uses an explicit `forall`.

pprIfaceForAll :: [IfaceForAllBndr] -> SDoc #

Render the "forall ... ." or "forall ... ->" bit of a type.

pprIfaceSigmaType :: ShowForAllFlag -> IfaceType -> SDoc #

pprIfaceTyLit :: IfaceTyLit -> SDoc #

pprIfaceCoercion :: IfaceCoercion -> SDoc #

pprParendIfaceCoercion :: IfaceCoercion -> SDoc #

splitIfaceSigmaTy :: IfaceType -> ([IfaceForAllBndr], [IfacePredType], IfaceType) #

pprIfaceTypeApp :: PprPrec -> IfaceTyCon -> IfaceAppArgs -> SDoc #

pprUserIfaceForAll :: [IfaceForAllBndr] -> SDoc #

pprIfaceCoTcApp :: PprPrec -> IfaceTyCon -> [IfaceCoercion] -> SDoc #

pprTyTcApp :: PprPrec -> IfaceTyCon -> IfaceAppArgs -> SDoc #

pprIfacePrefixApp :: PprPrec -> SDoc -> [SDoc] -> SDoc #

isIfaceRhoType :: IfaceType -> Bool #

suppressIfaceInvisibles :: PrintExplicitKinds -> [IfaceTyConBinder] -> [a] -> [a] #

stripIfaceInvisVars :: PrintExplicitKinds -> [IfaceTyConBinder] -> [IfaceTyConBinder] #

stripInvisArgs :: PrintExplicitKinds -> IfaceAppArgs -> IfaceAppArgs #

mkIfaceTySubst :: [(IfLclName, IfaceType)] -> IfaceTySubst #

substIfaceTyVar :: IfaceTySubst -> IfLclName -> IfaceType #

substIfaceAppArgs :: IfaceTySubst -> IfaceAppArgs -> IfaceAppArgs #

inDomIfaceTySubst :: IfaceTySubst -> IfaceTvBndr -> Bool #

many_ty :: IfaceType #

The type 'Many :: Multiplicity'.

pprTypeArrow :: FunTyFlag -> IfaceMult -> SDoc #