module VectBuiltIn (
Builtins(..), sumTyCon, prodTyCon, combinePAVar,
- initBuiltins, initBuiltinTyCons, initBuiltinDataCons,
+ initBuiltins, initBuiltinVars, initBuiltinTyCons, initBuiltinDataCons,
initBuiltinPAs, initBuiltinPRs,
initBuiltinBoxedTyCons,
import IfaceEnv ( lookupOrig )
import Module ( Module )
-import DataCon ( DataCon, dataConName )
+import DataCon ( DataCon, dataConName, dataConWorkId )
import TyCon ( TyCon, tyConName, tyConDataCons )
import Var ( Var )
import Id ( mkSysLocal )
, liftingContext = liftingContext
}
+initBuiltinVars :: Builtins -> [(Var, Var)]
+initBuiltinVars bi = [(v,v) | v <- map dataConWorkId defaultDataConWorkers]
+
+defaultDataConWorkers :: [DataCon]
+defaultDataConWorkers = [trueDataCon, falseDataCon]
+
initBuiltinTyCons :: Builtins -> [(Name, TyCon)]
initBuiltinTyCons bi = (tyConName funTyCon, closureTyCon bi)
: [(tyConName tc, tc) | tc <- defaultTyCons]
, global_bindings = []
}
+extendImportedVarsEnv :: [(Var, Var)] -> GlobalEnv -> GlobalEnv
+extendImportedVarsEnv ps genv
+ = genv { global_vars = extendVarEnvList (global_vars genv) ps }
+
setFamInstEnv :: FamInstEnv -> GlobalEnv -> GlobalEnv
setFamInstEnv l_fam_inst genv
= genv { global_fam_inst_env = (g_fam_inst, l_fam_inst) }
go =
do
builtins <- initBuiltins
- let builtin_tycons = initBuiltinTyCons builtins
+ let builtin_vars = initBuiltinVars builtins
+ builtin_tycons = initBuiltinTyCons builtins
builtin_datacons = initBuiltinDataCons builtins
builtin_pas <- initBuiltinPAs builtins
builtin_prs <- initBuiltinPRs builtins
let famInstEnvs = (eps_fam_inst_env eps, mg_fam_inst_env guts)
instEnvs = (eps_inst_env eps, mg_inst_env guts)
- let genv = extendTyConsEnv builtin_tycons
+ let genv = extendImportedVarsEnv builtin_vars
+ . extendTyConsEnv builtin_tycons
. extendDataConsEnv builtin_datacons
. extendPAFunsEnv builtin_pas
. setPRFunsEnv builtin_prs