Safe Haskell | None |
---|---|
Language | GHC2021 |
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 Specified :: ForAllTyFlag
- pattern Inferred :: 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
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
Instances
NFData IfaceType Source # | |
Defined in GHC.Iface.Type | |
Binary IfaceType Source # | |
Outputable IfaceType Source # | |
Eq IfaceType Source # | |
Ord IfaceType Source # | |
Defined in GHC.Iface.Type | |
Binary (DefMethSpec IfaceType) Source # | |
Defined in GHC.Iface.Type 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 #
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
NFData IfaceCoercion Source # | |
Defined in GHC.Iface.Type rnf :: IfaceCoercion -> () Source # | |
Binary IfaceCoercion Source # | |
Defined in GHC.Iface.Type put_ :: WriteBinHandle -> IfaceCoercion -> IO () Source # put :: WriteBinHandle -> IfaceCoercion -> IO (Bin IfaceCoercion) Source # get :: ReadBinHandle -> IO IfaceCoercion Source # | |
Outputable IfaceCoercion Source # | |
Defined in GHC.Iface.Type ppr :: IfaceCoercion -> SDoc Source # | |
Eq IfaceCoercion Source # | |
Defined in GHC.Iface.Type (==) :: IfaceCoercion -> IfaceCoercion -> Bool # (/=) :: IfaceCoercion -> IfaceCoercion -> Bool # | |
Ord IfaceCoercion Source # | |
Defined in GHC.Iface.Type compare :: IfaceCoercion -> IfaceCoercion -> Ordering # (<) :: IfaceCoercion -> IfaceCoercion -> Bool # (<=) :: IfaceCoercion -> IfaceCoercion -> Bool # (>) :: IfaceCoercion -> IfaceCoercion -> Bool # (>=) :: IfaceCoercion -> IfaceCoercion -> Bool # max :: IfaceCoercion -> IfaceCoercion -> IfaceCoercion # min :: IfaceCoercion -> IfaceCoercion -> IfaceCoercion # |
data IfaceAxiomRule Source #
Instances
NFData IfaceAxiomRule Source # | |
Defined in GHC.Iface.Type rnf :: IfaceAxiomRule -> () Source # | |
Binary IfaceAxiomRule Source # | |
Defined in GHC.Iface.Type 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 (==) :: IfaceAxiomRule -> IfaceAxiomRule -> Bool # (/=) :: IfaceAxiomRule -> IfaceAxiomRule -> Bool # | |
Ord IfaceAxiomRule Source # | |
Defined in GHC.Iface.Type 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 #
Instances
NFData IfaceMCoercion Source # | |
Defined in GHC.Iface.Type rnf :: IfaceMCoercion -> () Source # | |
Binary IfaceMCoercion Source # | |
Defined in GHC.Iface.Type 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 (==) :: IfaceMCoercion -> IfaceMCoercion -> Bool # (/=) :: IfaceMCoercion -> IfaceMCoercion -> Bool # | |
Ord IfaceMCoercion Source # | |
Defined in GHC.Iface.Type 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 #
IfaceTyCon | |
|
Instances
NFData IfaceTyCon Source # | |
Defined in GHC.Iface.Type rnf :: IfaceTyCon -> () Source # | |
Binary IfaceTyCon Source # | |
Defined in GHC.Iface.Type 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 ppr :: IfaceTyCon -> SDoc Source # | |
Eq IfaceTyCon Source # | |
Defined in GHC.Iface.Type (==) :: IfaceTyCon -> IfaceTyCon -> Bool # (/=) :: IfaceTyCon -> IfaceTyCon -> Bool # | |
Ord IfaceTyCon Source # | |
Defined in GHC.Iface.Type 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 #
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.
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 #
Instances
NFData IfaceTyLit Source # | |
Defined in GHC.Iface.Type rnf :: IfaceTyLit -> () Source # | |
Binary IfaceTyLit Source # | |
Defined in GHC.Iface.Type 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 ppr :: IfaceTyLit -> SDoc Source # | |
Eq IfaceTyLit Source # | |
Defined in GHC.Iface.Type (==) :: IfaceTyLit -> IfaceTyLit -> Bool # (/=) :: IfaceTyLit -> IfaceTyLit -> Bool # | |
Ord IfaceTyLit Source # | |
Defined in GHC.Iface.Type 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]
.
Instances
type IfaceContext = [IfacePredType] Source #
data IfaceOneShot Source #
Instances
NFData IfaceOneShot Source # | |
Defined in GHC.Iface.Type rnf :: IfaceOneShot -> () Source # | |
Binary IfaceOneShot Source # | |
Defined in GHC.Iface.Type 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 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
pattern Specified :: ForAllTyFlag | |
pattern Inferred :: 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 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 # | |
Defined in GHC.Types.Var |
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.
data ShowHowMuch Source #
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 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]
newtype UseBndrParens Source #
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 #