module Data.Array.Repa.Plugin.ToGHC.Var
( plainNameOfVar
, newDummyVar
, newDummyExportedVar
, newDummyTyVar)
where
import qualified Type as G
import qualified IdInfo as G
import qualified Var as G
import qualified UniqSupply as G
import qualified FastString as G
import qualified OccName as Occ
import qualified Name as Name
plainNameOfVar :: G.Var -> String
plainNameOfVar gv
= let name = G.varName gv
occ = Name.nameOccName name
in Occ.occNameString occ
newDummyExportedVar :: String -> G.Type -> G.UniqSM G.Var
newDummyExportedVar basename ty
= do let details = G.VanillaId
let occName = Occ.mkOccName Occ.varName basename
unique <- G.getUniqueUs
let name = Name.mkSystemName unique occName
let info = G.vanillaIdInfo
return $ G.mkExportedLocalVar details name ty info
newDummyVar :: String -> G.Type -> G.UniqSM G.Var
newDummyVar basename ty
= do let details = G.VanillaId
let occName = Occ.mkOccName Occ.varName basename
unique <- G.getUniqueUs
let name = Name.mkSystemName unique occName
let info = G.vanillaIdInfo
return $ G.mkLocalVar details name ty info
newDummyTyVar :: String -> G.UniqSM G.Var
newDummyTyVar basename
= do unique <- G.getUniqueUs
let name = Name.mkSysTvName unique (G.fsLit basename)
return $ G.mkTyVar name G.liftedTypeKind