X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Frename%2FRnUtils.lhs;h=7205e915d3d2e294250330bf0de2ccab8803fc5c;hb=e7498a3ee1d0484d02a9e86633cc179c76ebf36e;hp=2658fccdba3ee6794b4fb2294a87dbdbae7cde78;hpb=2f51f1402e6869c0f049ffbe7b019bf6ab80558f;p=ghc-hetmet.git diff --git a/ghc/compiler/rename/RnUtils.lhs b/ghc/compiler/rename/RnUtils.lhs index 2658fcc..7205e91 100644 --- a/ghc/compiler/rename/RnUtils.lhs +++ b/ghc/compiler/rename/RnUtils.lhs @@ -10,25 +10,18 @@ module RnUtils ( RnEnv(..), QualNames(..), UnqualNames(..), ScopeStack(..), emptyRnEnv, extendGlobalRnEnv, extendLocalRnEnv, - lookupRnEnv, lookupTcRnEnv, + lookupRnEnv, lookupGlobalRnEnv, lookupTcRnEnv, lubExportFlag, - unknownNameErr, - badClassOpErr, qualNameErr, - dupNamesErr, - shadowedNameWarn, - multipleOccWarn, - - -- ToDo: nuke/move? WDP 96/04/05 - GlobalNameMapper(..), GlobalNameMappers(..) + dupNamesErr ) where -import Ubiq +IMP_Ubiq(){-uitous-} import Bag ( Bag, emptyBag, snocBag, unionBags ) -import ErrUtils ( addShortErrLocLine, addErrLoc ) +import ErrUtils ( addShortErrLocLine ) import FiniteMap ( FiniteMap, emptyFM, isEmptyFM, lookupFM, addListToFM, addToFM ) import Maybes ( maybeToBool ) @@ -37,9 +30,6 @@ import PprStyle ( PprStyle(..) ) import Pretty import RnHsSyn ( RnName ) import Util ( assertPanic ) - -type GlobalNameMapper = RnName -> Maybe Name -type GlobalNameMappers = (GlobalNameMapper, GlobalNameMapper) \end{code} ********************************************************* @@ -63,6 +53,7 @@ extendGlobalRnEnv :: RnEnv -> [(RdrName,RnName)] -> [(RdrName,RnName)] -> (RnEnv, Bag (RdrName, RnName, RnName)) extendLocalRnEnv :: Bool -> RnEnv -> [RnName] -> (RnEnv, [RnName]) lookupRnEnv :: RnEnv -> RdrName -> Maybe RnName +lookupGlobalRnEnv :: RnEnv -> RdrName -> Maybe RnName lookupTcRnEnv :: RnEnv -> RdrName -> Maybe RnName \end{code} @@ -143,6 +134,11 @@ lookupRnEnv ((qual, unqual, _, _), stack) rdr found@(Just name) -> found Nothing -> do_on_fail +lookupGlobalRnEnv ((qual, unqual, _, _), _) rdr + = case rdr of + Unqual str -> lookupFM unqual str + Qual mod str -> lookupFM qual (str,mod) + lookupTcRnEnv ((_, _, tc_qual, tc_unqual), _) rdr = case rdr of Unqual str -> lookupFM tc_unqual str @@ -164,20 +160,11 @@ lubExportFlag ExportAbs ExportAbs = ExportAbs ********************************************************* * * -\subsection{Errors used in RnMonad} +\subsection{Errors used *more than once* in the renamer} * * ********************************************************* \begin{code} -unknownNameErr descriptor name locn - = addShortErrLocLine locn ( \ sty -> - ppBesides [ppStr "undefined ", ppStr descriptor, ppStr ": ", pprNonSym sty name] ) - -badClassOpErr clas op locn - = addErrLoc locn "" ( \ sty -> - ppBesides [ppChar '`', pprNonSym sty op, ppStr "' is not an operation of class `", - ppr sty clas, ppStr "'"] ) - qualNameErr descriptor (name,locn) = addShortErrLocLine locn ( \ sty -> ppBesides [ppStr "invalid use of qualified ", ppStr descriptor, ppStr ": ", pprNonSym sty name ] ) @@ -186,20 +173,13 @@ dupNamesErr descriptor ((name1,locn1) : dup_things) sty = ppAboves (item1 : map dup_item dup_things) where item1 - = ppBesides [ ppr PprForUser locn1, - ppStr ": multiple declarations of a ", ppStr descriptor, ppStr ": ", - pprNonSym sty name1 ] + = addShortErrLocLine locn1 (\ sty -> + ppBesides [ppStr "multiple declarations of a ", ppStr descriptor, ppStr " `", + pprNonSym sty name1, ppStr "'" ]) sty dup_item (name, locn) - = ppBesides [ ppr PprForUser locn, - ppStr ": here was another declaration of `", pprNonSym sty name, ppStr "'" ] - -shadowedNameWarn locn shadow - = addShortErrLocLine locn ( \ sty -> - ppBesides [ppStr "more than one value with the same name (shadowing): ", ppr sty shadow] ) - -multipleOccWarn (name, occs) sty - = ppBesides [ppStr "multiple names used to refer to `", ppr sty name, ppStr "': ", - ppInterleave ppComma (map (ppr sty) occs)] + = addShortErrLocLine locn (\ sty -> + ppBesides [ppStr "here was another declaration of `", + pprNonSym sty name, ppStr "'" ]) sty \end{code}