[project @ 2000-03-23 17:45:17 by simonpj]
[ghc-hetmet.git] / ghc / compiler / basicTypes / RdrName.lhs
index 3e5f52e..0db2b48 100644 (file)
@@ -12,11 +12,11 @@ module RdrName (
        mkRdrUnqual, mkRdrQual,
        mkSrcUnqual, mkSrcQual, 
        mkSysUnqual, mkSysQual,
-       mkPreludeQual, qualifyRdrName,
+       mkPreludeQual, qualifyRdrName, mkRdrNameWkr,
        dummyRdrVarName, dummyRdrTcName,
 
        -- Destruction
-       rdrNameModule, rdrNameOcc, 
+       rdrNameModule, rdrNameOcc, setRdrNameOcc,
        isRdrDataCon, isRdrTyVar, isQual, isUnqual
   ) where 
 
@@ -26,9 +26,9 @@ import OccName        ( NameSpace, tcName,
                  OccName,
                  mkSysOccFS,
                  mkSrcOccFS, mkSrcVarOcc,
-                 isDataOcc, isTvOcc
+                 isDataOcc, isTvOcc, mkWorkerOcc
                )
-import Module   ( ModuleName,
+import Module   ( ModuleName, pprModuleName,
                  mkSysModuleFS, mkSrcModuleFS
                )
 import Outputable
@@ -62,6 +62,9 @@ rdrNameModule (RdrName (Qual m) _) = m
 
 rdrNameOcc :: RdrName -> OccName
 rdrNameOcc (RdrName _ occ) = occ
+
+setRdrNameOcc :: RdrName -> OccName -> RdrName
+setRdrNameOcc (RdrName q _) occ = RdrName q occ
 \end{code}
 
 \begin{code}
@@ -92,8 +95,11 @@ mkPreludeQual :: NameSpace -> ModuleName -> FAST_STRING -> RdrName
 mkPreludeQual sp mod n = RdrName (Qual mod) (mkSrcOccFS sp n)
 
 qualifyRdrName :: ModuleName -> RdrName -> RdrName
-qualifyRdrName mod (RdrName Unqual occ) = RdrName (Qual mod) occ
-qualifyRdrName mod rdr_name            = rdr_name 
+       -- Sets the module name of a RdrName, even if it has one already
+qualifyRdrName mod (RdrName _ occ) = RdrName (Qual mod) occ
+
+mkRdrNameWkr :: RdrName -> RdrName     -- Worker-ify it
+mkRdrNameWkr (RdrName qual occ) = RdrName qual (mkWorkerOcc occ)
 \end{code}
 
 \begin{code}
@@ -129,7 +135,7 @@ instance Outputable RdrName where
     ppr (RdrName qual occ) = pp_qual qual <> ppr occ
                           where
                                pp_qual Unqual = empty
-                               pp_qual (Qual mod) = ppr mod <> dot
+                               pp_qual (Qual mod) = pprModuleName mod <> dot
 
 instance Eq RdrName where
     a == b = case (a `compare` b) of { EQ -> True;  _ -> False }