Moduleghc-9.10.3GHC2021
GHC.Iface.Type
- 32 types
- 48 values
- Packageghc-9.10.3
- Exports82
- LanguageGHC2021
- LicenceBSD-3-Clause
- SourceType.hs
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 TyVarIfaceTyVar IfLclNameIfaceLitTy IfaceTyLitIfaceAppTy IfaceType IfaceAppArgsIfaceFunTy FunTyFlag IfaceMult IfaceType IfaceTypeIfaceForAllTy IfaceForAllBndr IfaceTypeIfaceTyConApp IfaceTyCon IfaceAppArgsIfaceCastTy IfaceType IfaceCoercionIfaceCoercionTy IfaceCoercionIfaceTupleTy TupleSort PromotionFlag IfaceAppArgs
Instances4NFData, Outputable, Binary
NFData IfaceTypeDefined in ghc-9.10.3 · GHC.Iface.TypeOutputable IfaceTypeDefined in ghc-9.10.3 · GHC.Iface.TypeBinary IfaceTypeDefined in ghc-9.10.3 · GHC.Iface.TypeBinary (DefMethSpec IfaceType)Defined in ghc-9.10.3 · GHC.Iface.Type
Constructors
IfaceReflCo IfaceTypeIfaceGReflCo Role IfaceType IfaceMCoercionIfaceFunCo Role IfaceCoercion IfaceCoercion IfaceCoercionIfaceTyConAppCo Role IfaceTyCon [IfaceCoercion]IfaceAppCo IfaceCoercion IfaceCoercionIfaceForAllCo IfaceBndr !ForAllTyFlag !ForAllTyFlag IfaceCoercion IfaceCoercionIfaceCoVarCo IfLclNameIfaceAxiomInstCo IfExtName BranchIndex [IfaceCoercion]IfaceAxiomRuleCo IfLclName [IfaceCoercion]IfaceUnivCo IfaceUnivCoProv Role IfaceType IfaceTypeIfaceSymCo IfaceCoercionIfaceTransCo IfaceCoercion IfaceCoercionIfaceSelCo CoSel IfaceCoercionIfaceLRCo LeftOrRight IfaceCoercionIfaceInstCo IfaceCoercion IfaceCoercionIfaceKindCo IfaceCoercionIfaceSubCo IfaceCoercionIfaceFreeCoVar CoVarIfaceHoleCo CoVarSee Note [Holes in IfaceCoercion]
Instances3NFData, Outputable, Binary
NFData IfaceCoercionDefined in ghc-9.10.3 · GHC.Iface.TypeOutputable IfaceCoercionDefined in ghc-9.10.3 · GHC.Iface.TypeBinary IfaceCoercionDefined in ghc-9.10.3 · GHC.Iface.Type
Constructors
Instances2NFData, Binary
NFData IfaceMCoercionDefined in ghc-9.10.3 · GHC.Iface.TypeBinary IfaceMCoercionDefined in ghc-9.10.3 · GHC.Iface.Type
Instances2NFData, Binary
NFData IfaceUnivCoProvDefined in ghc-9.10.3 · GHC.Iface.TypeBinary IfaceUnivCoProvDefined in ghc-9.10.3 · GHC.Iface.Type
Constructors
Instances4Eq, NFData, Outputable, Binary
Eq IfaceTyConDefined in ghc-9.10.3 · GHC.Iface.TypeNFData IfaceTyConDefined in ghc-9.10.3 · GHC.Iface.TypeOutputable IfaceTyConDefined in ghc-9.10.3 · GHC.Iface.TypeBinary IfaceTyConDefined in ghc-9.10.3 · GHC.Iface.Type
Constructors
Instances4Eq, NFData, Outputable, Binary
Eq IfaceTyConInfoDefined in ghc-9.10.3 · GHC.Iface.TypeNFData IfaceTyConInfoDefined in ghc-9.10.3 · GHC.Iface.TypeOutputable IfaceTyConInfoDefined in ghc-9.10.3 · GHC.Iface.TypeBinary IfaceTyConInfoDefined in ghc-9.10.3 · GHC.Iface.Type
The various types of TyCons which have special, built-in syntax.
Constructors
IfaceNormalTyCona regular tycon
IfaceTupleTyCon !Arity !TupleSorta 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 !Arityan unboxed sum, e.g.
(# a | b | c #)IfaceEqualityTyConA 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]
Instances4Eq, NFData, Outputable, Binary
Eq IfaceTyConSortDefined in ghc-9.10.3 · GHC.Iface.TypeNFData IfaceTyConSortDefined in ghc-9.10.3 · GHC.Iface.TypeOutputable IfaceTyConSortDefined in ghc-9.10.3 · GHC.Iface.TypeBinary IfaceTyConSortDefined in ghc-9.10.3 · GHC.Iface.Type
Instances4Eq, NFData, Outputable, Binary
Eq IfaceTyLitDefined in ghc-9.10.3 · GHC.Iface.TypeNFData IfaceTyLitDefined in ghc-9.10.3 · GHC.Iface.TypeOutputable IfaceTyLitDefined in ghc-9.10.3 · GHC.Iface.TypeBinary IfaceTyLitDefined in ghc-9.10.3 · GHC.Iface.Type
Stores the arguments in a type application as a list.
See Note [Suppressing invisible arguments].
Constructors
Instances5Semigroup, Monoid, NFData, Outputable, Binary
Semigroup IfaceAppArgsDefined in ghc-9.10.3 · GHC.Iface.TypeMonoid IfaceAppArgsDefined in ghc-9.10.3 · GHC.Iface.TypeNFData IfaceAppArgsDefined in ghc-9.10.3 · GHC.Iface.TypeOutputable IfaceAppArgsDefined in ghc-9.10.3 · GHC.Iface.TypeBinary IfaceAppArgsDefined in ghc-9.10.3 · GHC.Iface.Type
Constructors
Instances3NFData, Outputable, Binary
NFData IfaceOneShotDefined in ghc-9.10.3 · GHC.Iface.TypeOutputable IfaceOneShotDefined in ghc-9.10.3 · GHC.Iface.TypeBinary IfaceOneShotDefined in ghc-9.10.3 · GHC.Iface.Type
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
Instances7Eq, Data, Ord, NFData, Binary, Outputable, …
Eq ForAllTyFlagDefined in ghc-9.10.3 · GHC.Types.VarData ForAllTyFlagDefined in ghc-9.10.3 · GHC.Types.VarOrd ForAllTyFlagDefined in ghc-9.10.3 · GHC.Types.VarNFData ForAllTyFlagDefined in ghc-9.10.3 · GHC.Types.VarOutputable ForAllTyFlagDefined in ghc-9.10.3 · GHC.Types.VarBinary ForAllTyFlagDefined in ghc-9.10.3 · GHC.Types.VarOutputable tv => Outputable (VarBndr tv ForAllTyFlag)Defined in ghc-9.10.3 · GHC.Types.Var
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
Instances5Eq, Data, Ord, Outputable, Binary
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
Constructors
ShowHeader AltPprHeader information only, not rhs
ShowSome (Maybe (OccName -> Bool)) AltPprShow the declaration and its RHS. The
Maybepredicate allows filtering of the sub-components which should be printing; any sub-components filtered out will be elided with....ShowIfaceEverything including GHC-internal information (used in --show-iface)
Instances1Outputable
Outputable ShowHowMuchDefined in ghc-9.10.3 · GHC.Iface.Type
Make an IfaceForAllBndr from an IfaceTvBndr.
Build the tyConKind from the binders and the result kind. Keep in sync with mkTyConKind in GHC.Core.TyCon.
Extract an IfaceBndr from an IfaceForAllBndr.
Extract the variable name from an IfaceForAllBndr.
Extract an IfaceBndr from an IfaceTyConBinder.
Extract the variable name from an IfaceTyConBinder.
Returns true for Type or (TYPE LiftedRep)
Do we want to suppress kind annotations on binders? See Note [Suppressing binder signatures]
Constructors
Constructors
Constructors
Prints a context or () if empty
You give it the context precedence
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
Like pprIfaceForAllPart, but always uses an explicit forall.
Render the "forall ... ." or "forall ... ->" bit of a type.
The type 'Many :: Multiplicity'.