[project @ 2003-11-06 17:09:50 by simonpj]
[ghc-hetmet.git] / ghc / compiler / basicTypes / OccName.lhs
index 2a242a0..d0b1128 100644 (file)
@@ -18,7 +18,7 @@ module OccName (
        -- The OccEnv type
        OccEnv, emptyOccEnv, unitOccEnv, extendOccEnv,
        lookupOccEnv, mkOccEnv, extendOccEnvList, elemOccEnv,
-       occEnvElts, foldOccEnv, plusOccEnv_C, extendOccEnv_C,
+       occEnvElts, foldOccEnv, plusOccEnv, plusOccEnv_C, extendOccEnv_C,
 
 
        -- The OccSet type
@@ -26,7 +26,7 @@ module OccName (
        unionOccSets, unionManyOccSets, minusOccSet, elemOccSet, occSetElts, 
        foldOccSet, isEmptyOccSet, intersectOccSet, intersectsOccSet,
 
-       mkOccFS, mkSysOcc, mkSysOccFS, mkFCallOcc, mkKindOccFS,
+       mkOccName, mkOccFS, mkSysOcc, mkSysOccFS, mkFCallOcc, mkKindOccFS,
        mkVarOcc, mkVarOccEncoded,
        mkSuperDictSelOcc, mkDFunOcc, mkForeignExportOcc,
        mkDictOcc, mkIPOcc, mkWorkerOcc, mkMethodOcc, mkDefaultMethodOcc,
@@ -34,7 +34,7 @@ module OccName (
        mkGenOcc1, mkGenOcc2, mkLocalOcc, mkDataTOcc, mkDataCOcc,
        mkDataConWrapperOcc, mkDataConWorkerOcc,
        
-       isTvOcc, isTcOcc, isDataOcc, isDataSymOcc, isSymOcc, isValOcc,
+       isVarOcc, isTvOcc, isTcOcc, isDataOcc, isDataSymOcc, isSymOcc, isValOcc,
        reportIfUnused,
 
        occNameFS, occNameString, occNameUserString, occNameSpace, 
@@ -200,7 +200,7 @@ pprOccName (OccName sp occ)
 %*                                                                     *
 \subsection{Construction}
 %*                                                                     *
-%************************************************************************
+%*****p*******************************************************************
 
 *Sys* things do no encoding; the caller should ensure that the thing is
 already encoded
@@ -235,6 +235,9 @@ mkKindOccFS occ_sp fs = OccName occ_sp fs
 mkOccFS :: NameSpace -> UserFS -> OccName
 mkOccFS occ_sp fs = mkSysOccFS occ_sp (encodeFS fs)
 
+mkOccName :: NameSpace -> String -> OccName
+mkOccName ns s = mkSysOcc ns (encode s)
+
 mkVarOcc :: UserFS -> OccName
 mkVarOcc fs = mkSysOccFS varName (encodeFS fs)
 
@@ -281,6 +284,7 @@ elemOccEnv   :: OccName -> OccEnv a -> Bool
 foldOccEnv   :: (a -> b -> b) -> b -> OccEnv a -> b
 occEnvElts   :: OccEnv a -> [a]
 extendOccEnv_C :: (a->a->a) -> OccEnv a -> OccName -> a -> OccEnv a
+plusOccEnv     :: OccEnv a -> OccEnv a -> OccEnv a
 plusOccEnv_C   :: (a->a->a) -> OccEnv a -> OccEnv a -> OccEnv a
 
 emptyOccEnv     = emptyUFM
@@ -292,6 +296,7 @@ mkOccEnv         = listToUFM
 elemOccEnv      = elemUFM
 foldOccEnv      = foldUFM
 occEnvElts      = eltsUFM
+plusOccEnv      = plusUFM
 plusOccEnv_C    = plusUFM_C
 extendOccEnv_C   = addToUFM_C
 
@@ -370,7 +375,10 @@ briefNameSpaceFlavour TcClsName = "tc"
 \end{code}
 
 \begin{code}
-isTvOcc, isDataSymOcc, isSymOcc, isTcOcc :: OccName -> Bool
+isVarOcc, isTvOcc, isDataSymOcc, isSymOcc, isTcOcc :: OccName -> Bool
+
+isVarOcc (OccName VarName _) = True
+isVarOcc other               = False
 
 isTvOcc (OccName TvName _) = True
 isTvOcc other              = False