Safe Haskell | None |
---|---|
Language | GHC2021 |
GHC.Iface.Type
Synopsis
- type IfExtName = Name
- newtype IfLclName = IfLclName {}
- mkIfLclName :: FastString -> IfLclName
- ifLclNameFS :: 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
- | IfaceAxiomCo IfaceAxiomRule [IfaceCoercion]
- | IfaceUnivCo UnivCoProvenance Role IfaceType IfaceType [IfaceCoercion]
- | IfaceSymCo IfaceCoercion
- | IfaceTransCo IfaceCoercion IfaceCoercion
- | IfaceSelCo CoSel IfaceCoercion
- | IfaceLRCo LeftOrRight IfaceCoercion
- | IfaceInstCo IfaceCoercion IfaceCoercion
- | IfaceKindCo IfaceCoercion
- | IfaceSubCo IfaceCoercion
- | IfaceFreeCoVar CoVar
- | IfaceHoleCo CoVar
- data IfaceAxiomRule
- data IfaceMCoercion
- type IfaceMult = IfaceType
- data IfaceTyCon = IfaceTyCon {}
- data IfaceTyConInfo = IfaceTyConInfo {}
- mkIfaceTyConInfo :: PromotionFlag -> IfaceTyConSort -> IfaceTyConInfo
- data IfaceTyConSort
- data IfaceTyLit
- data IfaceAppArgs
- type IfaceContext = [IfacePredType]
- data IfaceBndr
- data 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 Inferred :: ForAllTyFlag
- pattern Specified :: ForAllTyFlag
- data FunTyFlag
- data ShowForAllFlag
- data ShowSub = ShowSub {}
- data ShowHowMuch
- 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
- putIfaceType :: WriteBinHandle -> IfaceType -> IO ()
- getIfaceType :: HasCallStack => ReadBinHandle -> IO IfaceType
- ifaceTypeSharedByte :: Word8
- 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
A local name in iface syntax
Constructors
IfLclName | |
Fields |
Instances
NFData IfLclName Source # | |
Defined in GHC.Iface.Type | |
Binary IfLclName Source # | |
Outputable IfLclName Source # | |
Show IfLclName Source # | |
Eq IfLclName Source # | |
Ord IfLclName Source # | |
mkIfLclName :: FastString -> IfLclName Source #
ifLclNameFS :: IfLclName -> FastString Source #
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
Instances
NFData IfaceType Source # | |
Defined in GHC.Iface.Type | |
Binary IfaceType Source # | |
Outputable IfaceType Source # | |
Eq IfaceType Source # | |
Ord IfaceType Source # | |
Binary (DefMethSpec IfaceType) Source # | |
Defined in GHC.Iface.Type Methods put_ :: WriteBinHandle -> DefMethSpec IfaceType -> IO () Source # put :: WriteBinHandle -> DefMethSpec IfaceType -> IO (Bin (DefMethSpec IfaceType)) Source # get :: ReadBinHandle -> IO (DefMethSpec IfaceType) Source # |
type IfacePredType = IfaceType Source #
data IfaceCoercion Source #
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 | |
IfaceAxiomCo IfaceAxiomRule [IfaceCoercion] | There are only a fixed number of CoAxiomRules, so it suffices to use an IfaceLclName to distinguish them. See Note [Adding built-in type families] in GHC.Builtin.Types.Literals |
IfaceUnivCo UnivCoProvenance Role IfaceType IfaceType [IfaceCoercion] | |
IfaceSymCo IfaceCoercion | |
IfaceTransCo IfaceCoercion IfaceCoercion | |
IfaceSelCo CoSel IfaceCoercion | |
IfaceLRCo LeftOrRight IfaceCoercion | |
IfaceInstCo IfaceCoercion IfaceCoercion | |
IfaceKindCo IfaceCoercion | |
IfaceSubCo IfaceCoercion | |
IfaceFreeCoVar CoVar | See Note [Free TyVars and CoVars in IfaceType] |
IfaceHoleCo CoVar | See Note [Holes in IfaceCoercion] |
Instances
data IfaceAxiomRule Source #
Instances
NFData IfaceAxiomRule Source # | |
Defined in GHC.Iface.Type Methods rnf :: IfaceAxiomRule -> () Source # | |
Binary IfaceAxiomRule Source # | |
Defined in GHC.Iface.Type Methods put_ :: WriteBinHandle -> IfaceAxiomRule -> IO () Source # put :: WriteBinHandle -> IfaceAxiomRule -> IO (Bin IfaceAxiomRule) Source # get :: ReadBinHandle -> IO IfaceAxiomRule Source # | |
Eq IfaceAxiomRule Source # | |
Defined in GHC.Iface.Type Methods (==) :: IfaceAxiomRule -> IfaceAxiomRule -> Bool # (/=) :: IfaceAxiomRule -> IfaceAxiomRule -> Bool # | |
Ord IfaceAxiomRule Source # | |
Defined in GHC.Iface.Type Methods compare :: IfaceAxiomRule -> IfaceAxiomRule -> Ordering # (<) :: IfaceAxiomRule -> IfaceAxiomRule -> Bool # (<=) :: IfaceAxiomRule -> IfaceAxiomRule -> Bool # (>) :: IfaceAxiomRule -> IfaceAxiomRule -> Bool # (>=) :: IfaceAxiomRule -> IfaceAxiomRule -> Bool # max :: IfaceAxiomRule -> IfaceAxiomRule -> IfaceAxiomRule # min :: IfaceAxiomRule -> IfaceAxiomRule -> IfaceAxiomRule # |
data IfaceMCoercion Source #
Constructors
IfaceMRefl | |
IfaceMCo IfaceCoercion |
Instances
NFData IfaceMCoercion Source # | |
Defined in GHC.Iface.Type Methods rnf :: IfaceMCoercion -> () Source # | |
Binary IfaceMCoercion Source # | |
Defined in GHC.Iface.Type Methods put_ :: WriteBinHandle -> IfaceMCoercion -> IO () Source # put :: WriteBinHandle -> IfaceMCoercion -> IO (Bin IfaceMCoercion) Source # get :: ReadBinHandle -> IO IfaceMCoercion Source # | |
Eq IfaceMCoercion Source # | |
Defined in GHC.Iface.Type Methods (==) :: IfaceMCoercion -> IfaceMCoercion -> Bool # (/=) :: IfaceMCoercion -> IfaceMCoercion -> Bool # | |
Ord IfaceMCoercion Source # | |
Defined in GHC.Iface.Type Methods compare :: IfaceMCoercion -> IfaceMCoercion -> Ordering # (<) :: IfaceMCoercion -> IfaceMCoercion -> Bool # (<=) :: IfaceMCoercion -> IfaceMCoercion -> Bool # (>) :: IfaceMCoercion -> IfaceMCoercion -> Bool # (>=) :: IfaceMCoercion -> IfaceMCoercion -> Bool # max :: IfaceMCoercion -> IfaceMCoercion -> IfaceMCoercion # min :: IfaceMCoercion -> IfaceMCoercion -> IfaceMCoercion # |
data IfaceTyCon Source #
Constructors
IfaceTyCon | |
Fields
|
Instances
NFData IfaceTyCon Source # | |
Defined in GHC.Iface.Type Methods rnf :: IfaceTyCon -> () Source # | |
Binary IfaceTyCon Source # | |
Defined in GHC.Iface.Type Methods put_ :: WriteBinHandle -> IfaceTyCon -> IO () Source # put :: WriteBinHandle -> IfaceTyCon -> IO (Bin IfaceTyCon) Source # get :: ReadBinHandle -> IO IfaceTyCon Source # | |
Outputable IfaceTyCon Source # | |
Defined in GHC.Iface.Type Methods ppr :: IfaceTyCon -> SDoc Source # | |
Eq IfaceTyCon Source # | |
Defined in GHC.Iface.Type | |
Ord IfaceTyCon Source # | |
Defined in GHC.Iface.Type Methods compare :: IfaceTyCon -> IfaceTyCon -> Ordering # (<) :: IfaceTyCon -> IfaceTyCon -> Bool # (<=) :: IfaceTyCon -> IfaceTyCon -> Bool # (>) :: IfaceTyCon -> IfaceTyCon -> Bool # (>=) :: IfaceTyCon -> IfaceTyCon -> Bool # max :: IfaceTyCon -> IfaceTyCon -> IfaceTyCon # min :: IfaceTyCon -> IfaceTyCon -> IfaceTyCon # |
data IfaceTyConInfo Source #
Constructors
IfaceTyConInfo | |
Instances
mkIfaceTyConInfo :: PromotionFlag -> IfaceTyConSort -> IfaceTyConInfo Source #
This smart constructor allows sharing of the two most common cases. See Note [Sharing IfaceTyConInfo]
data IfaceTyConSort Source #
The various types of TyCons which have special, built-in syntax.
Constructors
IfaceNormalTyCon | a regular tycon |
IfaceTupleTyCon !Arity !TupleSort | a tuple, e.g. |
IfaceSumTyCon !Arity | an unboxed sum, e.g. |
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
data IfaceTyLit Source #
Constructors
IfaceNumTyLit Integer | |
IfaceStrTyLit LexicalFastString | |
IfaceCharTyLit Char |
Instances
NFData IfaceTyLit Source # | |
Defined in GHC.Iface.Type Methods rnf :: IfaceTyLit -> () Source # | |
Binary IfaceTyLit Source # | |
Defined in GHC.Iface.Type Methods put_ :: WriteBinHandle -> IfaceTyLit -> IO () Source # put :: WriteBinHandle -> IfaceTyLit -> IO (Bin IfaceTyLit) Source # get :: ReadBinHandle -> IO IfaceTyLit Source # | |
Outputable IfaceTyLit Source # | |
Defined in GHC.Iface.Type Methods ppr :: IfaceTyLit -> SDoc Source # | |
Eq IfaceTyLit Source # | |
Defined in GHC.Iface.Type | |
Ord IfaceTyLit Source # | |
Defined in GHC.Iface.Type Methods compare :: IfaceTyLit -> IfaceTyLit -> Ordering # (<) :: IfaceTyLit -> IfaceTyLit -> Bool # (<=) :: IfaceTyLit -> IfaceTyLit -> Bool # (>) :: IfaceTyLit -> IfaceTyLit -> Bool # (>=) :: IfaceTyLit -> IfaceTyLit -> Bool # max :: IfaceTyLit -> IfaceTyLit -> IfaceTyLit # min :: IfaceTyLit -> IfaceTyLit -> IfaceTyLit # |
data IfaceAppArgs Source #
Stores the arguments in a type application as a list.
See Note [Suppressing invisible arguments]
.
Constructors
IA_Nil | |
IA_Arg IfaceType ForAllTyFlag IfaceAppArgs |
Instances
type IfaceContext = [IfacePredType] Source #
Constructors
IfaceIdBndr !IfaceIdBndr | |
IfaceTvBndr !IfaceTvBndr |
Instances
NFData IfaceBndr Source # | |
Defined in GHC.Iface.Type | |
Binary IfaceBndr Source # | |
Outputable IfaceBndr Source # | |
Eq IfaceBndr Source # | |
Ord IfaceBndr Source # | |
data IfaceOneShot Source #
Constructors
IfaceNoOneShot | |
IfaceOneShot |
Instances
NFData IfaceOneShot Source # | |
Defined in GHC.Iface.Type Methods rnf :: IfaceOneShot -> () Source # | |
Binary IfaceOneShot Source # | |
Defined in GHC.Iface.Type Methods put_ :: WriteBinHandle -> IfaceOneShot -> IO () Source # put :: WriteBinHandle -> IfaceOneShot -> IO (Bin IfaceOneShot) Source # get :: ReadBinHandle -> IO IfaceOneShot Source # | |
Outputable IfaceOneShot Source # | |
Defined in GHC.Iface.Type Methods ppr :: IfaceOneShot -> SDoc Source # |
type IfaceLamBndr = (IfaceBndr, IfaceOneShot) Source #
type IfaceTvBndr = (IfLclName, IfaceKind) Source #
data ForAllTyFlag Source #
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 Inferred :: ForAllTyFlag | |
pattern Specified :: ForAllTyFlag |
Instances
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
Instances
Binary FunTyFlag Source # | |
Outputable FunTyFlag Source # | |
Data FunTyFlag Source # | |
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 # | |
Eq FunTyFlag Source # | |
Ord FunTyFlag Source # | |
data ShowForAllFlag Source #
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 |
Constructors
ShowSub | |
Fields |
data ShowHowMuch Source #
Constructors
ShowHeader AltPpr | Header information only, not rhs |
ShowSome (Maybe (OccName -> Bool)) AltPpr | Show the declaration and its RHS. The |
ShowIface | Everything including GHC-internal information (used in --show-iface) |
Instances
Outputable ShowHowMuch Source # | |
Defined in GHC.Iface.Type Methods ppr :: ShowHowMuch -> SDoc Source # |
mkIfaceForAllTvBndr :: ForAllTyFlag -> IfaceTvBndr -> IfaceForAllBndr Source #
Make an IfaceForAllBndr
from an IfaceTvBndr
.
mkIfaceTyConKind :: [IfaceTyConBinder] -> IfaceKind -> IfaceKind Source #
Build the tyConKind
from the binders and the result kind.
Keep in sync with mkTyConKind
in GHC.Core.TyCon.
ifForAllBndrVar :: IfaceForAllBndr -> IfaceBndr Source #
Extract an IfaceBndr
from an IfaceForAllBndr
.
ifForAllBndrName :: IfaceForAllBndr -> IfLclName Source #
Extract the variable name from an IfaceForAllBndr
.
ifaceBndrName :: IfaceBndr -> IfLclName Source #
ifTyConBinderVar :: IfaceTyConBinder -> IfaceBndr Source #
Extract an IfaceBndr
from an IfaceTyConBinder
.
ifTyConBinderName :: IfaceTyConBinder -> IfLclName Source #
Extract the variable name from an IfaceTyConBinder
.
putIfaceType :: WriteBinHandle -> IfaceType -> IO () Source #
Serialises an IfaceType
to the given WriteBinHandle
.
Serialising inner IfaceType'
s uses the put
of IfaceType
which may be using
a deduplication table. See Note [Deduplication during iface binary serialisation].
getIfaceType :: HasCallStack => ReadBinHandle -> IO IfaceType Source #
Deserialises an IfaceType
from the given ReadBinHandle
.
Reading inner IfaceType'
s uses the get
of IfaceType
which may be using
a deduplication table. See Note [Deduplication during iface binary serialisation].
ifaceTypeSharedByte :: Word8 Source #
This is the byte tag we expect to read when the next
value is not an IfaceType
value, but an offset into a
lookup table.
See Note [Deduplication during iface binary serialisation].
Must not overlap with any byte tag in getIfaceType
.
isIfaceLiftedTypeKind :: IfaceKind -> Bool Source #
Returns true for Type or (TYPE LiftedRep)
appArgsIfaceTypes :: IfaceAppArgs -> [IfaceType] Source #
newtype SuppressBndrSig Source #
Do we want to suppress kind annotations on binders? See Note [Suppressing binder signatures]
Constructors
SuppressBndrSig Bool |
newtype UseBndrParens Source #
Constructors
UseBndrParens Bool |
newtype PrintExplicitKinds Source #
Constructors
PrintExplicitKinds Bool |
pprIfaceType :: IfaceType -> SDoc Source #
pprParendIfaceType :: IfaceType -> SDoc Source #
pprIfaceContext :: PprPrec -> [IfacePredType] -> SDoc Source #
Prints a context or ()
if empty
You give it the context precedence
pprIfaceContextArr :: [IfacePredType] -> SDoc Source #
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 Source #
pprIfaceLamBndr :: IfaceLamBndr -> SDoc Source #
pprIfaceTvBndr :: IfaceTvBndr -> SuppressBndrSig -> UseBndrParens -> SDoc Source #
pprIfaceTyConBinders :: SuppressBndrSig -> [IfaceTyConBinder] -> SDoc Source #
pprIfaceBndrs :: [IfaceBndr] -> SDoc Source #
pprIfaceAppArgs :: IfaceAppArgs -> SDoc Source #
pprIfaceForAllPart :: [IfaceForAllBndr] -> [IfacePredType] -> SDoc -> SDoc Source #
pprIfaceForAllPartMust :: [IfaceForAllBndr] -> [IfacePredType] -> SDoc -> SDoc Source #
Like pprIfaceForAllPart
, but always uses an explicit forall
.
pprIfaceForAll :: [IfaceForAllBndr] -> SDoc Source #
Render the "forall ... ." or "forall ... ->" bit of a type.
pprIfaceSigmaType :: ShowForAllFlag -> IfaceType -> SDoc Source #
pprIfaceTyLit :: IfaceTyLit -> SDoc Source #
pprIfaceCoercion :: IfaceCoercion -> SDoc Source #
splitIfaceSigmaTy :: IfaceType -> ([IfaceForAllBndr], [IfacePredType], IfaceType) Source #
pprIfaceTypeApp :: PprPrec -> IfaceTyCon -> IfaceAppArgs -> SDoc Source #
pprUserIfaceForAll :: [IfaceForAllBndr] -> SDoc Source #
pprIfaceCoTcApp :: PprPrec -> IfaceTyCon -> [IfaceCoercion] -> SDoc Source #
pprTyTcApp :: PprPrec -> IfaceTyCon -> IfaceAppArgs -> SDoc Source #
isIfaceRhoType :: IfaceType -> Bool Source #
suppressIfaceInvisibles :: PrintExplicitKinds -> [IfaceTyConBinder] -> [a] -> [a] Source #
mkIfaceTySubst :: [(IfLclName, IfaceType)] -> IfaceTySubst Source #
substIfaceTyVar :: IfaceTySubst -> IfLclName -> IfaceType Source #
substIfaceAppArgs :: IfaceTySubst -> IfaceAppArgs -> IfaceAppArgs Source #
inDomIfaceTySubst :: IfaceTySubst -> IfaceTvBndr -> Bool Source #