-\begin{code}
-nameUnique (Local u _ _ _) = u
-nameUnique (Global u _ _ _ _) = u
-
--- when we renumber/rename things, we need to be
--- able to change a Name's Unique to match the cached
--- one in the thing it's the name of. If you know what I mean.
-changeUnique (Local _ n b l) u = Local u n b l
-changeUnique n@(Global _ o p e os) u = ASSERT(not (isBuiltinName n))
- Global u o p e os
-
-nameOrigName (Local _ n _ _) = Unqual n
-nameOrigName (Global _ orig _ _ _) = orig
-
-nameModuleNamePair (Local _ n _ _) = (panic "nameModuleNamePair", n)
-nameModuleNamePair (Global _ (Unqual n) _ _ _) = (pRELUDE, n)
-nameModuleNamePair (Global _ (Qual m n) _ _ _) = (m, n)
-
-nameOccName (Local _ n _ _) = Unqual n
-nameOccName (Global _ orig _ _ [] ) = orig
-nameOccName (Global _ orig _ _ occs) = head occs
-
-nameExportFlag (Local _ _ _ _) = NotExported
-nameExportFlag (Global _ _ _ exp _) = exp
-
-nameSrcLoc (Local _ _ _ loc) = loc
-nameSrcLoc (Global _ _ (LocalDef loc) _ _) = loc
-nameSrcLoc (Global _ _ (Imported _ loc _) _ _) = loc
-nameSrcLoc (Global _ _ Implicit _ _) = mkUnknownSrcLoc
-nameSrcLoc (Global _ _ Builtin _ _) = mkBuiltinSrcLoc
-
-nameImpLocs (Global _ _ (Imported _ _ locs) _ _) = locs
-nameImpLocs _ = []
-
-nameImportFlag (Local _ _ _ _) = NotExported
-nameImportFlag (Global _ _ (LocalDef _) _ _) = ExportAll
-nameImportFlag (Global _ _ (Imported exp _ _) _ _) = exp
-nameImportFlag (Global _ _ Implicit _ _) = ExportAll
-nameImportFlag (Global _ _ Builtin _ _) = ExportAll
-
-isLocallyDefinedName (Local _ _ _ _) = True
-isLocallyDefinedName (Global _ _ (LocalDef _) _ _) = True
-isLocallyDefinedName (Global _ _ (Imported _ _ _) _ _) = False
-isLocallyDefinedName (Global _ _ Implicit _ _) = False
-isLocallyDefinedName (Global _ _ Builtin _ _) = False
-
-isPreludeDefinedName (Local _ n _ _) = False
-isPreludeDefinedName (Global _ orig _ _ _) = isUnqual orig
-\end{code}
-
-\begin{code}
-instance Outputable Name where
- ppr sty (Local u n emph_uniq _)
- | codeStyle sty = pprUnique u
- | emph_uniq = ppBesides [pprUnique u, ppStr "{-", ppPStr n, ppStr "-}"]
- | otherwise = ppBesides [ppPStr n, ppStr "{-", pprUnique u, ppStr "-}"]
-
- ppr PprDebug (Global u o _ _ _) = ppBesides [ppr PprDebug o, ppStr "{-", pprUnique u, ppStr "-}"]
- ppr PprForUser (Global u o _ _ [] ) = ppr PprForUser o
- ppr PprForUser (Global u o _ _ occs) = ppr PprForUser (head occs)
- ppr PprShowAll (Global u o prov exp occs) = pp_all o prov exp occs
- ppr sty (Global u o _ _ _) = ppr sty o
-
-pp_all orig prov exp occs
- = ppBesides [ppr PprShowAll orig, ppr PprShowAll occs, pp_prov prov, pp_exp exp]
-
-pp_exp NotExported = ppNil
-pp_exp ExportAll = ppPStr SLIT("/EXP(..)")
-pp_exp ExportAbs = ppPStr SLIT("/EXP")
-
-pp_prov Implicit = ppPStr SLIT("/IMPLICIT")
-pp_prov Builtin = ppPStr SLIT("/BUILTIN")
-pp_prov _ = ppNil
-\end{code}