proxyHashId :: Id
proxyHashId
  = pcMiscPrelId proxyName ty
       (noCafIdInfo `setUnfoldingInfo` evaldUnfolding) -- Note [evaldUnfoldings]
  where
    ty      = mkForAllTys [kv, tv] (mkProxyPrimTy k t)
    kv      = kKiVar
    k       = mkTyVarTy kv
    tv:_    = tyVarList k
    t       = mkTyVarTy tv

------------------------------------------------
-- unsafeCoerce# :: forall a b. a -> b
proxyHashId :: Id
proxyHashId
  = pcMiscPrelId proxyName ty
       (noCafIdInfo `setUnfoldingInfo` evaldUnfolding) -- Note [evaldUnfoldings]
  where
    ty      = mkForAllTys [kv, tv] (mkProxyPrimTy k t)
    kv      = kKiVar
    k       = mkTyVarTy kv
    tv:_    = tyVarList k
    t       = mkTyVarTy tv

------------------------------------------------
-- unsafeCoerce# :: forall a b. a -> b
proxyHashId
  = pcMiscPrelId proxyName ty
       (noCafIdInfo `setUnfoldingInfo` evaldUnfolding) -- Note [evaldUnfoldings]
  where
    ty      = mkForAllTys [kv, tv] (mkProxyPrimTy k t)
    kv      = kKiVar
    k       = mkTyVarTy kv
    tv:_    = tyVarList k
    t       = mkTyVarTy tv

------------------------------------------------
-- unsafeCoerce# :: forall a b. a -> b