Moduleghc-10.0.0.20260917GHC2024
GHC.Iface.Type
- 33 types
- 54 values
- Packageghc-10.0.0.20260917
- Exports89
- LanguageGHC2024
- LicenceBSD-3-Clause
- SourceType.hs
A local name in iface syntax
Constructors
Instances6Eq, Ord, Show, NFData, Outputable, Binary
Eq IfLclNameDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeOrd IfLclNameDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeShow IfLclNameDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeNFData IfLclNameDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeOutputable IfLclNameDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeBinary IfLclNameDefined in ghc-10.0.0.20260917 · GHC.Iface.Type
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
Instances7Eq, Ord, Outputable, NFData, Binary, …
Eq IfaceTypeDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeOrd IfaceTypeDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeNFData IfaceTypeDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeOutputable IfaceTypeDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeBinary IfaceTypeDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeNFData (DefMethSpec IfaceType)Defined in ghc-10.0.0.20260917 · GHC.Iface.TypeBinary (DefMethSpec IfaceType)Defined in ghc-10.0.0.20260917 · GHC.Iface.Type
Constructors
IfaceReflCo IfaceTypeIfaceGReflCo Role IfaceType IfaceMCoercionIfaceFunCo Role IfaceCoercion IfaceCoercion IfaceCoercionIfaceTyConAppCo Role IfaceTyCon [IfaceCoercion]IfaceAppCo IfaceCoercion IfaceCoercionIfaceForAllCo IfaceBndr !ForAllTyFlag !ForAllTyFlag IfaceMCoercion IfaceCoercionIfaceCoVarCo IfLclNameIfaceAxiomCo 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 IfaceCoercionIfaceTransCo IfaceCoercion IfaceCoercionIfaceSelCo CoSel IfaceCoercionIfaceLRCo LeftOrRight IfaceCoercionIfaceInstCo IfaceCoercion IfaceCoercionIfaceKindCo IfaceCoercionIfaceSubCo IfaceCoercionIfaceFreeCoVar CoVarSee Note [Free TyVars and CoVars in IfaceType]
IfaceHoleCo CoVarSee Note [Holes in IfaceCoercion]
Instances5Eq, Ord, NFData, Outputable, Binary
Eq IfaceCoercionDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeOrd IfaceCoercionDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeNFData IfaceCoercionDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeOutputable IfaceCoercionDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeBinary IfaceCoercionDefined in ghc-10.0.0.20260917 · GHC.Iface.Type
Instances4Eq, Ord, NFData, Binary
Eq IfaceAxiomRuleDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeOrd IfaceAxiomRuleDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeNFData IfaceAxiomRuleDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeBinary IfaceAxiomRuleDefined in ghc-10.0.0.20260917 · GHC.Iface.Type
Constructors
Instances4Eq, Ord, NFData, Binary
Eq IfaceMCoercionDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeOrd IfaceMCoercionDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeNFData IfaceMCoercionDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeBinary IfaceMCoercionDefined in ghc-10.0.0.20260917 · GHC.Iface.Type
Constructors
IfaceTyConifaceTyConName :: IfExtNameifaceTyConInfo :: !IfaceTyConInfoWe add a bang to this field as heap analysis showed that this constructor retains a thunk to a value that is usually shared.
See !12200 for how this bang saved ~10% residency when loading
mi_extra_declson the agda code base.See Note [Sharing IfaceTyConInfo] for why sharing is so important for IfaceTyConInfo.
Instances5Eq, Ord, NFData, Outputable, Binary
Eq IfaceTyConDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeOrd IfaceTyConDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeNFData IfaceTyConDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeOutputable IfaceTyConDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeBinary IfaceTyConDefined in ghc-10.0.0.20260917 · GHC.Iface.Type
Constructors
Instances5Eq, Ord, NFData, Outputable, Binary
Eq IfaceTyConInfoDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeOrd IfaceTyConInfoDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeNFData IfaceTyConInfoDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeOutputable IfaceTyConInfoDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeBinary IfaceTyConInfoDefined in ghc-10.0.0.20260917 · GHC.Iface.Type
This smart constructor allows sharing of the two most common cases. See Note [Sharing IfaceTyConInfo]
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]
Instances5Eq, Ord, NFData, Outputable, Binary
Eq IfaceTyConSortDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeOrd IfaceTyConSortDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeNFData IfaceTyConSortDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeOutputable IfaceTyConSortDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeBinary IfaceTyConSortDefined in ghc-10.0.0.20260917 · GHC.Iface.Type
Instances5Eq, Ord, NFData, Outputable, Binary
Eq IfaceTyLitDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeOrd IfaceTyLitDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeNFData IfaceTyLitDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeOutputable IfaceTyLitDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeBinary IfaceTyLitDefined in ghc-10.0.0.20260917 · GHC.Iface.Type
Stores the arguments in a type application as a list.
See Note [Suppressing invisible arguments].
Constructors
Instances7Eq, Ord, Semigroup, Monoid, NFData, Outputable, …
Eq IfaceAppArgsDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeOrd IfaceAppArgsDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeSemigroup IfaceAppArgsDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeMonoid IfaceAppArgsDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeNFData IfaceAppArgsDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeOutputable IfaceAppArgsDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeBinary IfaceAppArgsDefined in ghc-10.0.0.20260917 · GHC.Iface.Type
Constructors
Instances5Eq, Ord, NFData, Outputable, Binary
Eq IfaceBndrDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeOrd IfaceBndrDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeNFData IfaceBndrDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeOutputable IfaceBndrDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeBinary IfaceBndrDefined in ghc-10.0.0.20260917 · GHC.Iface.Type
Instances3NFData, Outputable, Binary
NFData IfaceOneShotDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeOutputable IfaceOneShotDefined in ghc-10.0.0.20260917 · GHC.Iface.TypeBinary IfaceOneShotDefined in ghc-10.0.0.20260917 · 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
Instances8Eq, Data, Ord, NFData, Binary, OutputableBndrFlag, …
Eq ForAllTyFlagDefined in ghc-10.0.0.20260917 · Language.Haskell.Syntax.SpecificityData ForAllTyFlagDefined in ghc-10.0.0.20260917 · Language.Haskell.Syntax.SpecificityOrd ForAllTyFlagDefined in ghc-10.0.0.20260917 · Language.Haskell.Syntax.SpecificityNFData ForAllTyFlagDefined in ghc-10.0.0.20260917 · GHC.Hs.Specificity · orphanOutputable ForAllTyFlagDefined in ghc-10.0.0.20260917 · GHC.Hs.Specificity · orphanBinary ForAllTyFlagDefined in ghc-10.0.0.20260917 · GHC.Hs.Specificity · orphanOutputableBndrFlag ForAllTyFlag pDefined in ghc-10.0.0.20260917 · GHC.Hs.TypeOutputable tv => Outputable (VarBndr tv ForAllTyFlag)Defined in ghc-10.0.0.20260917 · 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
Instances6Eq, Data, Ord, NFData, Outputable, Binary
Eq FunTyFlagDefined in ghc-10.0.0.20260917 · GHC.Types.VarData FunTyFlagDefined in ghc-10.0.0.20260917 · GHC.Types.VarOrd FunTyFlagDefined in ghc-10.0.0.20260917 · GHC.Types.VarNFData FunTyFlagDefined in ghc-10.0.0.20260917 · GHC.Types.VarOutputable FunTyFlagDefined in ghc-10.0.0.20260917 · GHC.Types.VarBinary FunTyFlagDefined in ghc-10.0.0.20260917 · GHC.Types.Var
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-10.0.0.20260917 · 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.
Serialises an IfaceType to the given WriteBinHandle.
Serialising inner IfaceType's uses the Binary.put of IfaceType which may be using
a deduplication table. See Note [Deduplication during iface binary serialisation].
Deserialises an IfaceType from the given ReadBinHandle.
Reading inner IfaceType's uses the Binary.get of IfaceType which may be using
a deduplication table. See Note [Deduplication during iface binary serialisation].
Returns true for Type or (TYPE LiftedRep)
Do we want to suppress kind annotations on binders? See Note [Suppressing binder signatures]
Constructors
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'.