import CoreSyn
import Class
import TyCon
+import DataCon
import Type
import Var
import VarEnv
--
, global_tycons :: NameEnv TyCon
- -- Mapping from TyCons to their PA dictionaries
+ -- Mapping from DataCons to their vectorised versions
--
- , global_tycon_pa :: NameEnv CoreExpr
+ , global_datacons :: NameEnv DataCon
-- External package inst-env & home-package inst-env for class
-- instances
global_vars = mapVarEnv (Var . snd) $ vectInfoVar info
, global_exported_vars = emptyVarEnv
, global_tycons = mapNameEnv snd $ vectInfoTyCon info
- , global_tycon_pa = emptyNameEnv
+ , global_datacons = mapNameEnv snd $ vectInfoDataCon info
, global_inst_env = instEnvs
, global_fam_inst_env = famInstEnvs
, global_bindings = []
updVectInfo :: GlobalEnv -> TypeEnv -> VectInfo -> VectInfo
updVectInfo env tyenv info
= info {
- vectInfoVar = global_exported_vars env
- , vectInfoTyCon = tc_env
+ vectInfoVar = global_exported_vars env
+ , vectInfoTyCon = mk_env typeEnvTyCons global_tycons
+ , vectInfoDataCon = mk_env typeEnvDataCons global_datacons
}
where
- tc_env = mkNameEnv [(tc_name, (tc,tc'))
- | tc <- typeEnvTyCons tyenv
- , let tc_name = tyConName tc
- , Just tc' <- [lookupNameEnv (global_tycons env) tc_name]]
+ mk_env from_tyenv from_env = mkNameEnv [(name, (from,to))
+ | from <- from_tyenv tyenv
+ , let name = getName from
+ , Just to <- [lookupNameEnv (from_env env) name]]
data VResult a = Yes GlobalEnv LocalEnv a | No