From 643193875b6323a11b824b5934603ffaecacde61 Mon Sep 17 00:00:00 2001 From: simonpj Date: Wed, 11 Dec 2002 12:00:50 +0000 Subject: [PATCH] [project @ 2002-12-11 12:00:50 by simonpj] Better comparision for Exact RdrNames --- ghc/compiler/basicTypes/RdrName.lhs | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/ghc/compiler/basicTypes/RdrName.lhs b/ghc/compiler/basicTypes/RdrName.lhs index fe98430..9da6edf 100644 --- a/ghc/compiler/basicTypes/RdrName.lhs +++ b/ghc/compiler/basicTypes/RdrName.lhs @@ -126,8 +126,8 @@ 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) = Qual (mkSysModuleNameFS m) (mkSysOccFS ns n) +mkIfaceOrig :: NameSpace -> EncodedFS -> EncodedFS -> RdrName +mkIfaceOrig ns m n = Orig (mkSysModuleNameFS m) (mkSysOccFS ns n) -- These two are used when parsing source files @@ -154,6 +154,9 @@ unqualifyRdrName rdr_name = Unqual (rdrNameOcc rdr_name) mkRdrNameWkr :: RdrName -> RdrName -- Worker-ify it mkRdrNameWkr rdr_name = Qual (rdrNameModule rdr_name) (mkWorkerOcc (rdrNameOcc rdr_name)) + +origFromName :: Name -> RdrName +origFromName n = Orig (moduleName (nameModule n)) (nameOccName n) \end{code} \begin{code} @@ -185,7 +188,7 @@ isExact (Exact _) = True isExact other = False isExact_maybe (Exact n) = Just n -isExact_maybe other = Nothing +isExact_maybe other = Nothing \end{code} @@ -222,18 +225,17 @@ instance Ord RdrName where a > b = case (a `compare` b) of { LT -> False; EQ -> False; GT -> True } -- Unqual < Qual < Orig < Exact + compare (Exact n1) (Exact n2) = n1 `compare` n2 compare (Qual m1 o1) (Qual m2 o2) = (o1 `compare` o2) `thenCmp` (m1 `compare` m2) compare (Orig m1 o1) (Orig m2 o2) = (o1 `compare` o2) `thenCmp` (m1 `compare` m2) compare (Unqual o1) (Unqual o2) = o1 `compare` o2 - compare (Exact n1) (Exact n2) = n1 `compare` n2 + -- Convert Exact to Orig + compare (Exact n1) n2 = origFromName n1 `compare` n2 + compare n1 (Exact n2) = n1 `compare` origFromName n2 + compare (Unqual _) _ = LT - compare (Qual _ _) (Orig _ _) = LT - compare (Qual _ _) (Exact _) = LT - - compare (Orig _ _) (Exact _) = LT - compare _ _ = GT \end{code} -- 1.7.10.4