args <- mapM (newLocalVar FSLIT("xs")) arr_tys
shapes <- shapeReplicate shape
(Var len)
- (mkIntLitInt $ dataConTag vect_dc)
+ (mkDataConTag vect_dc)
empty_pre <- mapM emptyPA (concat pre)
empty_post <- mapM emptyPA (concat post)
module VectUtils (
collectAnnTypeBinders, collectAnnTypeArgs, isAnnTypeArg,
collectAnnValBinders,
+ mkDataConTag,
splitClosureTy,
mkPADictType, mkPArrayType,
paDictArgType, paDictOfType, paDFunType,
import Type
import TypeRep
import TyCon
-import DataCon ( dataConWrapId )
+import DataCon ( DataCon, dataConWrapId, dataConTag )
import Var
import Id ( mkWildId )
import MkId ( unwrapFamInstScrut )
isAnnTypeArg (_, AnnType t) = True
isAnnTypeArg _ = False
+mkDataConTag :: DataCon -> CoreExpr
+mkDataConTag dc = mkConApp intDataCon [mkIntLitInt $ dataConTag dc]
+
isClosureTyCon :: TyCon -> Bool
isClosureTyCon tc = tyConName tc == closureTyConName