GHC.Types.Id.Make

ghc-lib-parser-9.14.1.20251220: 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
- wrapNewTypeBody :: TyCon -> [Type] -> CoreExpr -> CoreExpr
- 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, [HsImplBang], [StrictnessMark])
- 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 #

mkDictSelId :: Name -> Class -> Id #

mkDictSelRhs :: Class -> Int -> CoreExpr #

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

wrapNewTypeBody :: TyCon -> [Type] -> CoreExpr -> CoreExpr #

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

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

newtype DataConBoxer #

Data Constructor Boxer

Constructors

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

vanillaDataConBoxer :: DataConBoxer #

mkDataConRep :: DataConBangOpts -> FamInstEnvs -> Name -> DataCon -> UniqSM (DataConRep, [HsImplBang], [StrictnessMark]) #

mkDataConWorkId :: Name -> DataCon -> Id #

data DataConBangOpts #

Constructors

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

data BangOpts #

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 #

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 #

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.