X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FbasicTypes%2FRdrName.lhs;h=6db15bcbbeefc6a1c03a5007e3932dd71114a725;hb=920f106b8472089fb96eca537d1965256302301c;hp=ed6bd43edb1f6dc0fc9a56d85311abdfb68fac87;hpb=d64022dc071b587c20a693b7f355f69dc110b707;p=ghc-hetmet.git diff --git a/compiler/basicTypes/RdrName.lhs b/compiler/basicTypes/RdrName.lhs index ed6bd43..6db15bc 100644 --- a/compiler/basicTypes/RdrName.lhs +++ b/compiler/basicTypes/RdrName.lhs @@ -4,6 +4,7 @@ % \begin{code} +{-# LANGUAGE DeriveDataTypeable #-} -- | -- #name_types# @@ -29,7 +30,6 @@ module RdrName ( mkRdrUnqual, mkRdrQual, mkUnqual, mkVarUnqual, mkQual, mkOrig, nameRdrName, getRdrName, - mkDerivedRdrName, -- ** Destruction rdrNameOcc, rdrNameSpace, setRdrNameSpace, @@ -67,6 +67,8 @@ import SrcLoc import FastString import Outputable import Util + +import Data.Data \end{code} %************************************************************************ @@ -107,6 +109,7 @@ data RdrName -- (2) By Template Haskell, when TH has generated a unique name -- -- Such a 'RdrName' can be created by using 'getRdrName' on a 'Name' + deriving (Data, Typeable) \end{code} @@ -160,14 +163,6 @@ mkOrig :: Module -> OccName -> RdrName mkOrig mod occ = Orig mod occ --------------- --- | Produce an original 'RdrName' whose module that of a parent 'Name' but its 'OccName' --- is derived from that of it's parent using the supplied function -mkDerivedRdrName :: Name -> (OccName -> OccName) -> RdrName -mkDerivedRdrName parent mk_occ - = ASSERT2( isExternalName parent, ppr parent ) - mkOrig (nameModule parent) (mk_occ (nameOccName parent)) - ---------------- -- These two are used when parsing source files -- They do encode the module and occurrence names mkUnqual :: NameSpace -> FastString -> RdrName @@ -428,10 +423,9 @@ lookupGlobalRdrEnv env occ_name = case lookupOccEnv env occ_name of Just gres -> gres extendGlobalRdrEnv :: GlobalRdrEnv -> GlobalRdrElt -> GlobalRdrEnv -extendGlobalRdrEnv env gre = extendOccEnv_C add env occ [gre] +extendGlobalRdrEnv env gre = extendOccEnv_Acc (:) singleton env occ gre where occ = nameOccName (gre_name gre) - add gres _ = gre:gres lookupGRE_RdrName :: RdrName -> GlobalRdrEnv -> [GlobalRdrElt] lookupGRE_RdrName rdr_name env @@ -515,9 +509,9 @@ mkGlobalRdrEnv :: [GlobalRdrElt] -> GlobalRdrEnv mkGlobalRdrEnv gres = foldr add emptyGlobalRdrEnv gres where - add gre env = extendOccEnv_C (foldr insertGRE) env - (nameOccName (gre_name gre)) - [gre] + add gre env = extendOccEnv_Acc insertGRE singleton env + (nameOccName (gre_name gre)) + gre findLocalDupsRdrEnv :: GlobalRdrEnv -> [OccName] -> (GlobalRdrEnv, [[Name]]) -- ^ For each 'OccName', see if there are multiple local definitions