[project @ 2001-10-19 14:22:11 by simonpj]
[ghc-hetmet.git] / ghc / compiler / basicTypes / RdrName.lhs
index 1d45301..aa54142 100644 (file)
@@ -11,17 +11,17 @@ module RdrName (
        -- Construction
        mkRdrUnqual, mkRdrQual, mkRdrOrig, mkRdrUnqual,
        mkUnqual, mkQual, mkIfaceOrig, mkOrig,
-       qualifyRdrName, mkRdrNameWkr,
+       qualifyRdrName, unqualifyRdrName, mkRdrNameWkr,
        dummyRdrVarName, dummyRdrTcName,
 
        -- Destruction
        rdrNameModule, rdrNameOcc, setRdrNameOcc,
-       isRdrDataCon, isRdrTyVar, isQual, isUnqual, isOrig,
+       isRdrDataCon, isRdrTyVar, isRdrTc, isQual, isUnqual, isOrig,
 
        -- Environment
        RdrNameEnv, 
        emptyRdrEnv, lookupRdrEnv, addListToRdrEnv, rdrEnvElts, 
-       extendRdrEnv, rdrEnvToList, elemRdrEnv,
+       extendRdrEnv, rdrEnvToList, elemRdrEnv, foldRdrEnv, 
 
        -- Printing;    instance Outputable RdrName
        pprUnqualRdrName 
@@ -33,7 +33,7 @@ import OccName        ( NameSpace, tcName,
                  OccName, UserFS, EncodedFS,
                  mkSysOccFS,
                  mkOccFS, mkVarOcc,
-                 isDataOcc, isTvOcc, mkWorkerOcc
+                 isDataOcc, isTvOcc, isTcOcc, mkWorkerOcc
                )
 import Module   ( ModuleName,
                  mkSysModuleNameFS, mkModuleNameFS
@@ -100,7 +100,7 @@ mkIfaceOrig ns (m,n) = RdrName (Orig (mkSysModuleNameFS m)) (mkSysOccFS ns n)
 
        -- These two are used when parsing source files
        -- They do encode the module and occurrence names
-mkUnqual :: NameSpace -> FAST_STRING -> RdrName
+mkUnqual :: NameSpace -> UserFS -> RdrName
 mkUnqual sp n = RdrName Unqual (mkOccFS sp n)
 
 mkQual :: NameSpace -> (UserFS, UserFS) -> RdrName
@@ -113,6 +113,9 @@ qualifyRdrName :: ModuleName -> RdrName -> RdrName
        -- Sets the module name of a RdrName, even if it has one already
 qualifyRdrName mod (RdrName _ occ) = RdrName (Qual mod) occ
 
+unqualifyRdrName :: RdrName -> RdrName
+unqualifyRdrName (RdrName _ occ) = RdrName Unqual occ
+
 mkRdrNameWkr :: RdrName -> RdrName     -- Worker-ify it
 mkRdrNameWkr (RdrName qual occ) = RdrName qual (mkWorkerOcc occ)
 \end{code}
@@ -131,6 +134,7 @@ dummyRdrTcName  = RdrName Unqual (mkOccFS tcName SLIT("TC-DUMMY"))
 \begin{code}
 isRdrDataCon (RdrName _ occ) = isDataOcc occ
 isRdrTyVar   (RdrName _ occ) = isTvOcc occ
+isRdrTc      (RdrName _ occ) = isTcOcc occ
 
 isUnqual (RdrName Unqual _) = True
 isUnqual other             = False
@@ -199,12 +203,14 @@ extendRdrEnv      :: RdrNameEnv a -> RdrName -> a -> RdrNameEnv a
 rdrEnvToList    :: RdrNameEnv a -> [(RdrName, a)]
 rdrEnvElts     :: RdrNameEnv a -> [a]
 elemRdrEnv     :: RdrName -> RdrNameEnv a -> Bool
+foldRdrEnv     :: (RdrName -> a -> b -> b) -> b -> RdrNameEnv a -> b
 
-emptyRdrEnv  = emptyFM
-lookupRdrEnv = lookupFM
+emptyRdrEnv     = emptyFM
+lookupRdrEnv    = lookupFM
 addListToRdrEnv = addListToFM
 rdrEnvElts     = eltsFM
 extendRdrEnv    = addToFM
 rdrEnvToList    = fmToList
 elemRdrEnv      = elemFM
+foldRdrEnv     = foldFM
 \end{code}