OccNames for closure conversion
[ghc-hetmet.git] / compiler / basicTypes / OccName.lhs
index 0810d73..4968463 100644 (file)
@@ -32,6 +32,7 @@ module OccName (
        mkDataTOcc, mkDataCOcc, mkDataConWorkerOcc,
        mkSuperDictSelOcc, mkLocalOcc, mkMethodOcc, mkInstTyTcOcc,
        mkInstTyCoOcc, mkEqPredCoOcc,
+        mkCloOcc, mkCloTyCoOcc,
 
        -- ** Deconstruction
        occNameFS, occNameString, occNameSpace, 
@@ -78,7 +79,6 @@ import Data.Char
 
 -- Unicode TODO: put isSymbol in libcompat
 #if __GLASGOW_HASKELL__ > 604
-import Data.Char       ( isSymbol )
 #else
 isSymbol = const False
 #endif
@@ -92,8 +92,8 @@ isSymbol = const False
 %************************************************************************
 
 \begin{code}
-data NameSpace = VarName       -- Variables, including "source" data constructors
-              | DataName       -- "Real" data constructors 
+data NameSpace = VarName       -- Variables, including "real" data constructors
+              | DataName       -- "Source" data constructors 
               | TvName         -- Type variables
               | TcClsName      -- Type constructors and classes; Haskell has them
                                -- in the same name space for now.
@@ -458,6 +458,10 @@ mkGenOcc2           = mk_simple_deriv varName  "$gto"
 mkDataTOcc = mk_simple_deriv varName  "$t"
 mkDataCOcc = mk_simple_deriv varName  "$c"
 
+-- Closure conversion
+mkCloOcc     = mk_simple_deriv varName "$CC_"
+mkCloTyCoOcc = mk_simple_deriv tcName  ":CC_"
+
 mk_simple_deriv sp px occ = mk_deriv sp px (occNameString occ)
 
 -- Data constructor workers are made by setting the name space