X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=sidebyside;f=ghc%2Fcompiler%2FbasicTypes%2FRdrName.lhs;h=df6fc9c8bbababa0110edd555d87effa28f76616;hb=778b2c6bdbabf2c9f394f0ca2b76b55a7123aa5f;hp=32774d9c6cee452965f8814b23cd603ed68005a8;hpb=1ea67691a1d115d95d6c3e8e593c2c2dbc36aa9c;p=ghc-hetmet.git diff --git a/ghc/compiler/basicTypes/RdrName.lhs b/ghc/compiler/basicTypes/RdrName.lhs index 32774d9..df6fc9c 100644 --- a/ghc/compiler/basicTypes/RdrName.lhs +++ b/ghc/compiler/basicTypes/RdrName.lhs @@ -1,4 +1,4 @@ - +% % (c) The GRASP/AQUA Project, Glasgow University, 1992-1998 % @@ -12,12 +12,20 @@ module RdrName ( mkRdrUnqual, mkRdrQual, mkSrcUnqual, mkSrcQual, mkSysUnqual, mkSysQual, - mkPreludeQual, qualifyRdrName, + mkPreludeQual, qualifyRdrName, mkRdrNameWkr, dummyRdrVarName, dummyRdrTcName, -- Destruction rdrNameModule, rdrNameOcc, setRdrNameOcc, - isRdrDataCon, isRdrTyVar, isQual, isUnqual + isRdrDataCon, isRdrTyVar, isQual, isUnqual, + + -- Environment + RdrNameEnv, + emptyRdrEnv, lookupRdrEnv, addListToRdrEnv, rdrEnvElts, + extendRdrEnv, rdrEnvToList, + + -- Printing; instance Outputable RdrName + pprUnqualRdrName ) where #include "HsVersions.h" @@ -26,11 +34,12 @@ import OccName ( NameSpace, tcName, OccName, mkSysOccFS, mkSrcOccFS, mkSrcVarOcc, - isDataOcc, isTvOcc + isDataOcc, isTvOcc, mkWorkerOcc ) import Module ( ModuleName, pprModuleName, mkSysModuleFS, mkSrcModuleFS ) +import FiniteMap import Outputable import Util ( thenCmp ) \end{code} @@ -97,6 +106,9 @@ mkPreludeQual sp mod n = RdrName (Qual mod) (mkSrcOccFS sp n) 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 + +mkRdrNameWkr :: RdrName -> RdrName -- Worker-ify it +mkRdrNameWkr (RdrName qual occ) = RdrName qual (mkWorkerOcc occ) \end{code} \begin{code} @@ -131,8 +143,10 @@ isQual rdr_name = not (isUnqual rdr_name) instance Outputable RdrName where ppr (RdrName qual occ) = pp_qual qual <> ppr occ where - pp_qual Unqual = empty - pp_qual (Qual mod) = pprModuleName mod <> dot + pp_qual Unqual = empty + pp_qual (Qual mod) = pprModuleName mod <> dot + +pprUnqualRdrName (RdrName qual occ) = ppr occ instance Eq RdrName where a == b = case (a `compare` b) of { EQ -> True; _ -> False } @@ -156,3 +170,26 @@ cmpQual (Qual m1) (Qual m2) = m1 `compare` m2 +%************************************************************************ +%* * +\subsection{Environment} +%* * +%************************************************************************ + +\begin{code} +type RdrNameEnv a = FiniteMap RdrName a + +emptyRdrEnv :: RdrNameEnv a +lookupRdrEnv :: RdrNameEnv a -> RdrName -> Maybe a +addListToRdrEnv :: RdrNameEnv a -> [(RdrName,a)] -> RdrNameEnv a +extendRdrEnv :: RdrNameEnv a -> RdrName -> a -> RdrNameEnv a +rdrEnvToList :: RdrNameEnv a -> [(RdrName, a)] +rdrEnvElts :: RdrNameEnv a -> [a] + +emptyRdrEnv = emptyFM +lookupRdrEnv = lookupFM +addListToRdrEnv = addListToFM +rdrEnvElts = eltsFM +extendRdrEnv = addToFM +rdrEnvToList = fmToList +\end{code}