VM,
noV, tryV, maybeV, orElseV, fixV, localV, closedV, initV,
- cloneName, newExportedVar, newLocalVar, newDummyVar, newTyVar,
+ cloneName, cloneId,
+ newExportedVar, newLocalVar, newDummyVar, newTyVar,
Builtins(..), paDictTyCon, paDictDataCon,
builtin,
(nameSrcSpan name)
| otherwise = mkSystemName u occ_name
+cloneId :: (OccName -> OccName) -> Id -> Type -> VM Id
+cloneId mk_occ id ty
+ = do
+ name <- cloneName mk_occ (getName id)
+ let id' | isExportedId id = Id.mkExportedLocalId name ty
+ | otherwise = Id.mkLocalId name ty
+ return id'
+
newExportedVar :: OccName -> Type -> VM Var
newExportedVar occ_name ty
= do
vectTopBinder :: Var -> VM Var
vectTopBinder var
= do
- vty <- vectType (idType var)
- name <- cloneName mkVectOcc (getName var)
- let var' | isExportedId var = Id.mkExportedLocalId name vty
- | otherwise = Id.mkLocalId name vty
+ vty <- vectType (idType var)
+ var' <- cloneId mkVectOcc var vty
defGlobalVar var var'
return var'