X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2FbasicTypes%2FRdrName.lhs;h=7557145f36a861516baa795a723a558a71afc74d;hb=3674a5cc2879ef276785c1b19af7c6f6bdee1488;hp=cc58eb138a64a9ee39ce2895a6bd11e28282694d;hpb=c27ec458271ebbd88ff72a7ae7ad026dd6dcc76e;p=ghc-hetmet.git diff --git a/ghc/compiler/basicTypes/RdrName.lhs b/ghc/compiler/basicTypes/RdrName.lhs index cc58eb1..7557145 100644 --- a/ghc/compiler/basicTypes/RdrName.lhs +++ b/ghc/compiler/basicTypes/RdrName.lhs @@ -10,11 +10,9 @@ module RdrName ( -- Construction mkRdrUnqual, mkRdrQual, - mkUnqual, mkVarUnqual, mkQual, mkOrig, mkIfaceOrig, + mkUnqual, mkVarUnqual, mkQual, mkOrig, nameRdrName, getRdrName, - qualifyRdrName, unqualifyRdrName, mkDerivedRdrName, - dummyRdrVarName, dummyRdrTcName, -- Destruction rdrNameModule, rdrNameOcc, setRdrNameSpace, @@ -22,7 +20,6 @@ module RdrName ( isOrig, isOrig_maybe, isExact, isExact_maybe, isSrcRdrName, -- Printing; instance Outputable RdrName - pprUnqualRdrName, -- LocalRdrEnv LocalRdrEnv, emptyLocalRdrEnv, extendLocalRdrEnv, @@ -35,7 +32,7 @@ module RdrName ( -- GlobalRdrElt, Provenance, ImportSpec GlobalRdrElt(..), Provenance(..), ImportSpec(..), - isLocalGRE, unQualOK, hasQual, + isLocalGRE, unQualOK, pprNameProvenance ) where @@ -54,7 +51,7 @@ import Module ( ModuleName, mkSysModuleNameFS, mkModuleNameFS ) import Name ( Name, NamedThing(getName), nameModuleName, nameParent_maybe, nameOccName, isExternalName, nameSrcLoc ) import Maybes ( seqMaybe ) -import SrcLoc ( SrcLoc, isGoodSrcLoc ) +import SrcLoc ( SrcLoc, isGoodSrcLoc, SrcSpan ) import BasicTypes( DeprecTxt ) import Outputable import Util ( thenCmp ) @@ -141,9 +138,6 @@ mkRdrQual mod occ = Qual mod occ mkOrig :: ModuleName -> OccName -> RdrName mkOrig mod occ = Orig mod occ -mkIfaceOrig :: NameSpace -> EncodedFS -> EncodedFS -> RdrName -mkIfaceOrig ns m n = Orig (mkSysModuleNameFS m) (mkSysOccFS ns n) - --------------- mkDerivedRdrName :: Name -> (OccName -> OccName) -> (RdrName) mkDerivedRdrName parent mk_occ @@ -170,13 +164,6 @@ nameRdrName name = Exact name -- unique is still there for debug printing, particularly -- of Types (which are converted to IfaceTypes before printing) -qualifyRdrName :: ModuleName -> RdrName -> RdrName - -- Sets the module name of a RdrName, even if it has one already -qualifyRdrName mod rn = Qual mod (rdrNameOcc rn) - -unqualifyRdrName :: RdrName -> RdrName -unqualifyRdrName rdr_name = Unqual (rdrNameOcc rdr_name) - nukeExact :: Name -> RdrName nukeExact n | isExternalName n = Orig (nameModuleName n) (nameOccName n) @@ -184,17 +171,6 @@ nukeExact n \end{code} \begin{code} - -- This guy is used by the reader when HsSyn has a slot for - -- an implicit name that's going to be filled in by - -- the renamer. We can't just put "error..." because - -- we sometimes want to print out stuff after reading but - -- before renaming -dummyRdrVarName = Unqual (mkVarOcc FSLIT("V-DUMMY")) -dummyRdrTcName = Unqual (mkOccFS tcName FSLIT("TC-DUMMY")) -\end{code} - - -\begin{code} isRdrDataCon rn = isDataOcc (rdrNameOcc rn) isRdrTyVar rn = isTvOcc (rdrNameOcc rn) isRdrTc rn = isTcOcc (rdrNameOcc rn) @@ -243,8 +219,6 @@ instance OutputableBndr RdrName where | isTvOcc (rdrNameOcc n) = char '@' <+> ppr n | otherwise = ppr n -pprUnqualRdrName rdr_name = ppr (rdrNameOcc rdr_name) - instance Eq RdrName where (Exact n1) == (Exact n2) = n1==n2 -- Convert exact to orig @@ -300,9 +274,9 @@ extendLocalRdrEnv env names = extendOccEnvList env [(nameOccName n, n) | n <- names] lookupLocalRdrEnv :: LocalRdrEnv -> RdrName -> Maybe Name -lookupLocalRdrEnv env rdr_name - | isUnqual rdr_name = lookupOccEnv env (rdrNameOcc rdr_name) - | otherwise = Nothing +lookupLocalRdrEnv env (Exact name) = Just name +lookupLocalRdrEnv env (Unqual occ) = lookupOccEnv env occ +lookupLocalRdrEnv env other = Nothing elemLocalRdrEnv :: RdrName -> LocalRdrEnv -> Bool elemLocalRdrEnv rdr_name env @@ -459,7 +433,7 @@ data ImportSpec -- Describes a particular import declaration -- the defining module for this thing! is_as :: ModuleName, -- 'as M' (or 'Muggle' if there is no 'as' clause) is_qual :: Bool, -- True <=> qualified (only) - is_loc :: SrcLoc } -- Location of import statment + is_loc :: SrcSpan } -- Location of import statment -- Comparison of provenance is just used for grouping -- error messages (in RnEnv.warnUnusedBinds) @@ -499,10 +473,11 @@ pprNameProvenance :: GlobalRdrElt -> SDoc pprNameProvenance (GRE {gre_name = name, gre_prov = LocalDef _}) = ptext SLIT("defined at") <+> ppr (nameSrcLoc name) pprNameProvenance (GRE {gre_name = name, gre_prov = Imported (why:whys) _}) - = sep [ppr_reason why, nest 2 (ppr_defn (nameSrcLoc name))] + = sep [ppr why, nest 2 (ppr_defn (nameSrcLoc name))] -ppr_reason imp_spec - = ptext SLIT("imported from") <+> ppr (is_mod imp_spec) +instance Outputable ImportSpec where + ppr imp_spec + = ptext SLIT("imported from") <+> ppr (is_mod imp_spec) <+> ptext SLIT("at") <+> ppr (is_loc imp_spec) ppr_defn loc | isGoodSrcLoc loc = parens (ptext SLIT("defined at") <+> ppr loc)