ghc-lib-parser-9.12.2.20250421: The GHC API, decoupled from GHC versions

Safe Haskell | Ignore
Language | GHC2021

GHC.Types.Id.Make

Synopsis

- mkDictFunId :: Name -> [TyVar] -> ThetaType -> Class -> [Type] -> Id
- mkDictSelId :: Name -> Class -> Id
- mkDictSelRhs :: Class -> Int -> CoreExpr
- mkFCallId :: Unique -> ForeignCall -> Type -> Id
- unwrapNewTypeBody :: TyCon -> [Type] -> CoreExpr -> CoreExpr
- wrapFamInstBody :: TyCon -> [Type] -> CoreExpr -> CoreExpr
- newtype DataConBoxer = DCB ([Type] -> [Var] -> UniqSM ([Var], [CoreBind]))
- vanillaDataConBoxer :: DataConBoxer
- mkDataConRep :: DataConBangOpts -> FamInstEnvs -> Name -> DataCon -> UniqSM DataConRep
- mkDataConWorkId :: Name -> DataCon -> Id
- data DataConBangOpts
  - = FixedBangOpts [HsImplBang]
  - | SrcBangOpts !BangOpts
- data BangOpts = BangOpts {
  - bang_opt_strict_data :: !Bool
  - bang_opt_unbox_disable :: !Bool
  - bang_opt_unbox_strict :: !Bool
  - bang_opt_unbox_small :: !Bool
  }
- unboxedUnitExpr :: CoreExpr
- wiredInIds :: [Id]
- ghcPrimIds :: [Id]
- realWorldPrimId :: Id
- voidPrimId :: Id
- voidArgId :: Id
- nullAddrId :: Id
- seqId :: Id
- lazyId :: Id
- lazyIdKey :: Unique
- coercionTokenId :: Id
- coerceId :: Id
- proxyHashId :: Id
- nospecId :: Id
- nospecIdName :: Name
- noinlineId :: Id
- noinlineIdName :: Name
- noinlineConstraintId :: Id
- noinlineConstraintIdName :: Name
- coerceName :: Name
- leftSectionName :: Name
- rightSectionName :: Name
- pcRepPolyId :: Name -> Type -> (Name -> ConcreteTyVars) -> IdInfo -> Id
- mkRepPolyIdConcreteTyVars :: [((Type, Position 'Neg), TyVar)] -> Name -> ConcreteTyVars

# Documentation

mkDictFunId :: Name -> [TyVar] -> ThetaType -> Class -> [Type] -> Id Source #

mkDictSelId :: Name -> Class -> Id Source #

mkDictSelRhs :: Class -> Int -> CoreExpr Source #

mkFCallId :: Unique -> ForeignCall -> Type -> Id Source #

unwrapNewTypeBody :: TyCon -> [Type] -> CoreExpr -> CoreExpr Source #

wrapFamInstBody :: TyCon -> [Type] -> CoreExpr -> CoreExpr Source #

newtype DataConBoxer Source #

Data Constructor Boxer

Constructors

DCB ([Type] -> [Var] -> UniqSM ([Var], [CoreBind])) |

vanillaDataConBoxer :: DataConBoxer Source #

mkDataConRep :: DataConBangOpts -> FamInstEnvs -> Name -> DataCon -> UniqSM DataConRep Source #

mkDataConWorkId :: Name -> DataCon -> Id Source #

data DataConBangOpts Source #

Constructors

FixedBangOpts [HsImplBang] | Used for imported data constructors See Note [Bangs on imported data constructors]
SrcBangOpts !BangOpts |

data BangOpts Source #

Constructors

BangOpts |

Fields

- bang_opt_strict_data :: !Bool

  Strict fields by default

- bang_opt_unbox_disable :: !Bool

  Disable automatic field unboxing (e.g. if we aren't optimising)

- bang_opt_unbox_strict :: !Bool

  Unbox strict fields

- bang_opt_unbox_small :: !Bool

  Unbox small strict fields

unboxedUnitExpr :: CoreExpr Source #

wiredInIds :: [Id] Source #

ghcPrimIds :: [Id] Source #

realWorldPrimId :: Id Source #

voidPrimId :: Id Source #

voidArgId :: Id Source #

nullAddrId :: Id Source #

seqId :: Id Source #

lazyId :: Id Source #

lazyIdKey :: Unique Source #

coercionTokenId :: Id Source #

coerceId :: Id Source #

proxyHashId :: Id Source #

nospecId :: Id Source #

nospecIdName :: Name Source #

noinlineId :: Id Source #

noinlineIdName :: Name Source #

noinlineConstraintId :: Id Source #

noinlineConstraintIdName :: Name Source #

coerceName :: Name Source #

leftSectionName :: Name Source #

rightSectionName :: Name Source #

pcRepPolyId :: Name -> Type -> (Name -> ConcreteTyVars) -> IdInfo -> Id Source #

mkRepPolyIdConcreteTyVars Source #

Arguments

:: [((Type, Position 'Neg), TyVar)] | ((ty, pos), tv) `ty` is the type on which the representation-polymorphism check is done `tv` is the type variable we are checking for concreteness (usually the kind of `ty`) `pos` is the position of `ty` in the type of the `Id`
-> Name | `Name` of the rep-poly `Id`
-> ConcreteTyVars |

Directly specify which outer forall'd type variables of a representation-polymorphic `Id` such become concrete metavariables when instantiated.