From f36b5cd4d09843a1c7b5245547e95cc7d8f30792 Mon Sep 17 00:00:00 2001 From: Roman Leshchinskiy Date: Thu, 2 Aug 2007 02:28:40 +0000 Subject: [PATCH] Refactoring --- compiler/vectorise/VectMonad.hs | 11 ++++++++++- compiler/vectorise/Vectorise.hs | 6 ++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/compiler/vectorise/VectMonad.hs b/compiler/vectorise/VectMonad.hs index a991b8c..1beb550 100644 --- a/compiler/vectorise/VectMonad.hs +++ b/compiler/vectorise/VectMonad.hs @@ -3,7 +3,8 @@ module VectMonad ( VM, noV, tryV, maybeV, orElseV, fixV, localV, closedV, initV, - cloneName, newExportedVar, newLocalVar, newDummyVar, newTyVar, + cloneName, cloneId, + newExportedVar, newLocalVar, newDummyVar, newTyVar, Builtins(..), paDictTyCon, paDictDataCon, builtin, @@ -307,6 +308,14 @@ cloneName mk_occ name = liftM make (liftDs newUnique) (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 diff --git a/compiler/vectorise/Vectorise.hs b/compiler/vectorise/Vectorise.hs index e3f8008..312650f 100644 --- a/compiler/vectorise/Vectorise.hs +++ b/compiler/vectorise/Vectorise.hs @@ -101,10 +101,8 @@ vectTopBind b@(Rec bs) 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' -- 1.7.10.4