ghc-9.4.0.20220721: The GHC API
Safe HaskellSafe-Inferred
LanguageHaskell2010

GHC.Iface.Type

Synopsis

Documentation

data IfaceType 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

Instances details
NFData IfaceType Source # 
Instance details

Defined in GHC.Iface.Type

Methods

rnf :: IfaceType -> () Source #

Binary IfaceType Source # 
Instance details

Defined in GHC.Iface.Type

Outputable IfaceType Source # 
Instance details

Defined in GHC.Iface.Type

Methods

ppr :: IfaceType -> SDoc Source #

Binary (DefMethSpec IfaceType) Source # 
Instance details

Defined in GHC.Iface.Type

data IfaceMCoercion Source #

Instances

Instances details
NFData IfaceMCoercion Source # 
Instance details

Defined in GHC.Iface.Type

Methods

rnf :: IfaceMCoercion -> () Source #

Binary IfaceMCoercion Source # 
Instance details

Defined in GHC.Iface.Type

data IfaceTyCon Source #

Instances

Instances details
NFData IfaceTyCon Source # 
Instance details

Defined in GHC.Iface.Type

Methods

rnf :: IfaceTyCon -> () Source #

Binary IfaceTyCon Source # 
Instance details

Defined in GHC.Iface.Type

Outputable IfaceTyCon Source # 
Instance details

Defined in GHC.Iface.Type

Methods

ppr :: IfaceTyCon -> SDoc Source #

Eq IfaceTyCon Source # 
Instance details

Defined in GHC.Iface.Type

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. (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 Source # 
Instance details

Defined in GHC.Iface.Type

Methods

rnf :: IfaceTyConSort -> () Source #

Binary IfaceTyConSort Source # 
Instance details

Defined in GHC.Iface.Type

Outputable IfaceTyConSort Source # 
Instance details

Defined in GHC.Iface.Type

Eq IfaceTyConSort Source # 
Instance details

Defined in GHC.Iface.Type

data IfaceTyLit Source #

Instances

Instances details
NFData IfaceTyLit Source # 
Instance details

Defined in GHC.Iface.Type

Methods

rnf :: IfaceTyLit -> () Source #

Binary IfaceTyLit Source # 
Instance details

Defined in GHC.Iface.Type

Outputable IfaceTyLit Source # 
Instance details

Defined in GHC.Iface.Type

Methods

ppr :: IfaceTyLit -> SDoc Source #

Eq IfaceTyLit Source # 
Instance details

Defined in GHC.Iface.Type

data IfaceAppArgs Source #

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

data IfaceBndr Source #

Instances

Instances details
NFData IfaceBndr Source # 
Instance details

Defined in GHC.Iface.Type

Methods

rnf :: IfaceBndr -> () Source #

Binary IfaceBndr Source # 
Instance details

Defined in GHC.Iface.Type

Outputable IfaceBndr Source # 
Instance details

Defined in GHC.Iface.Type

Methods

ppr :: IfaceBndr -> SDoc Source #

data IfaceOneShot Source #

Instances

Instances details
NFData IfaceOneShot Source # 
Instance details

Defined in GHC.Iface.Type

Methods

rnf :: IfaceOneShot -> () Source #

Binary IfaceOneShot Source # 
Instance details

Defined in GHC.Iface.Type

Outputable IfaceOneShot Source # 
Instance details

Defined in GHC.Iface.Type

data ArgFlag Source #

Argument Flag

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, TyCoVarBinders, TyConBinders, and visibility] in GHC.Core.TyCo.Rep

Bundled Patterns

pattern Specified :: ArgFlag 
pattern Inferred :: ArgFlag 

Instances

Instances details
Data ArgFlag Source # 
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) -> ArgFlag -> c ArgFlag Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ArgFlag Source #

toConstr :: ArgFlag -> Constr Source #

dataTypeOf :: ArgFlag -> DataType Source #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ArgFlag) Source #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ArgFlag) Source #

gmapT :: (forall b. Data b => b -> b) -> ArgFlag -> ArgFlag Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ArgFlag -> r Source #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ArgFlag -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> ArgFlag -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ArgFlag -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ArgFlag -> m ArgFlag Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ArgFlag -> m ArgFlag Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ArgFlag -> m ArgFlag Source #

Binary ArgFlag Source # 
Instance details

Defined in GHC.Types.Var

Outputable ArgFlag Source # 
Instance details

Defined in GHC.Types.Var

Methods

ppr :: ArgFlag -> SDoc Source #

Eq ArgFlag Source # 
Instance details

Defined in GHC.Types.Var

Methods

(==) :: ArgFlag -> ArgFlag -> Bool #

(/=) :: ArgFlag -> ArgFlag -> Bool #

Ord ArgFlag Source # 
Instance details

Defined in GHC.Types.Var

Outputable tv => Outputable (VarBndr tv ArgFlag) Source # 
Instance details

Defined in GHC.Types.Var

Methods

ppr :: VarBndr tv ArgFlag -> SDoc Source #

data AnonArgFlag Source #

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

Constructors

VisArg

Used for (->): an ordinary non-dependent arrow. The argument is visible in source code.

InvisArg

Used for (=>): a non-dependent predicate arrow. The argument is invisible in source code.

Instances

Instances details
Data AnonArgFlag Source # 
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) -> AnonArgFlag -> c AnonArgFlag Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c AnonArgFlag Source #

toConstr :: AnonArgFlag -> Constr Source #

dataTypeOf :: AnonArgFlag -> DataType Source #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c AnonArgFlag) Source #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c AnonArgFlag) Source #

gmapT :: (forall b. Data b => b -> b) -> AnonArgFlag -> AnonArgFlag Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> AnonArgFlag -> r Source #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> AnonArgFlag -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> AnonArgFlag -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> AnonArgFlag -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> AnonArgFlag -> m AnonArgFlag Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> AnonArgFlag -> m AnonArgFlag Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> AnonArgFlag -> m AnonArgFlag Source #

Binary AnonArgFlag Source # 
Instance details

Defined in GHC.Types.Var

Outputable AnonArgFlag Source # 
Instance details

Defined in GHC.Types.Var

Methods

ppr :: AnonArgFlag -> SDoc Source #

Eq AnonArgFlag Source # 
Instance details

Defined in GHC.Types.Var

Ord AnonArgFlag Source # 
Instance details

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.

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

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

ifForAllBndrName :: IfaceForAllBndr -> IfLclName Source #

Extract the variable name from an IfaceForAllBndr.

ifTyConBinderName :: IfaceTyConBinder -> IfLclName Source #

Extract the variable name from an IfaceTyConBinder.

isIfaceLiftedTypeKind :: IfaceKind -> Bool Source #

Given a kind K, is K of the form (TYPE ('BoxedRep 'LiftedRep))?

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 

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

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.

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

inDomIfaceTySubst :: IfaceTySubst -> IfaceTvBndr -> Bool Source #

many_ty :: IfaceType Source #

The type 'Many :: Multiplicity'.