mkDataConIds,
mkRecordSelId,
- mkPrimOpId, mkFCallId,
+ mkPrimOpId, mkFCallId, mkTickBoxOpId,
mkReboxingAlt, wrapNewTypeBody, unwrapNewTypeBody,
mkUnpackCase, mkProductBox,
import Outputable
import FastString
import ListSetOps
+import Module
\end{code}
%************************************************************************
-- arguments to the universals of the data constructor
-- (crucial when type checking interfaces)
dict_tys = mkPredTys theta
- result_ty_args = map (substTyVar subst) univ_tvs
+ result_ty_args = substTyVars subst univ_tvs
result_ty = case tyConFamInst_maybe tycon of
-- ordinary constructor
Nothing -> mkTyConApp tycon result_ty_args
(arg_tys, _) = tcSplitFunTys tau
arity = length arg_tys
strict_sig = mkStrictSig (mkTopDmdType (replicate arity evalDmd) TopRes)
+
+mkTickBoxOpId :: Unique
+ -> Module
+ -> TickBoxId
+ -> Id
+mkTickBoxOpId uniq mod ix = mkGlobalId (TickBoxOpId tickbox) name ty info
+ where
+ tickbox = TickBox mod ix
+ occ_str = showSDoc (braces (ppr tickbox))
+ name = mkTickBoxOpName uniq occ_str
+ info = noCafIdInfo
+ ty = realWorldStatePrimTy
\end{code}
(mkFunTy openAlphaTy openBetaTy)
[x] = mkTemplateLocals [openAlphaTy]
rhs = mkLams [openAlphaTyVar,openBetaTyVar,x] $
--- Note (Coerce openBetaTy openAlphaTy) (Var x)
- Cast (Var x) (mkUnsafeCoercion openAlphaTy openBetaTy)
+ Cast (Var x) (mkUnsafeCoercion openAlphaTy openBetaTy)
-- nullAddr# :: Addr#
-- The reason is is here is because we don't provide