From: sof Date: Fri, 14 Aug 1998 11:20:52 +0000 (+0000) Subject: [project @ 1998-08-14 11:20:52 by sof] X-Git-Tag: Approx_2487_patches~418 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=d8c0a1dddcb3e9f8939cacd9b77730c48aa89f3a;p=ghc-hetmet.git [project @ 1998-08-14 11:20:52 by sof] New function: mkNameVisible --- diff --git a/ghc/compiler/basicTypes/Name.lhs b/ghc/compiler/basicTypes/Name.lhs index ac47387..d1fd37f 100644 --- a/ghc/compiler/basicTypes/Name.lhs +++ b/ghc/compiler/basicTypes/Name.lhs @@ -26,7 +26,7 @@ module Name ( isWiredInName, nameUnique, changeUnique, setNameProvenance, getNameProvenance, - setNameVisibility, + setNameVisibility, mkNameVisible, nameOccName, nameString, nameModule, isExportedName, nameSrcLoc, @@ -64,9 +64,10 @@ import BasicTypes ( Module, IfaceFlavour(..), moduleString, pprModule ) import Lex ( isLexConId ) import SrcLoc ( noSrcLoc, mkBuiltinSrcLoc, SrcLoc ) import Unique ( pprUnique, showUnique, Unique, Uniquable(..) ) -import UniqSet ( UniqSet(..), emptyUniqSet, unitUniqSet, unionUniqSets, uniqSetToList, - isEmptyUniqSet, unionManyUniqSets, minusUniqSet, mkUniqSet, - elementOfUniqSet, addListToUniqSet, addOneToUniqSet +import UniqSet ( UniqSet, + emptyUniqSet, unitUniqSet, unionUniqSets, uniqSetToList, + isEmptyUniqSet, unionManyUniqSets, minusUniqSet, mkUniqSet, + elementOfUniqSet, addListToUniqSet, addOneToUniqSet ) import UniqFM ( UniqFM ) import Outputable @@ -315,6 +316,13 @@ setNameVisibility (Just mod) occ_uniq (Local uniq occ loc) setNameVisibility maybe_mod occ_uniq (Local uniq occ loc) = Local uniq (uniqToOccName occ_uniq) loc -- New OccName for Local +-- make the Name globally visible regardless. +mkNameVisible :: Module -> Unique -> Name -> Name +mkNameVisible mod occ_uniq nm@(Global _ _ _ _) = nm +mkNameVisible mod occ_uniq nm@(Local uniq occ loc) + = Global uniq mod (uniqToOccName occ_uniq) (LocalDef loc Exported) + + uniqToOccName uniq = VarOcc (_PK_ ('$':showUnique uniq)) -- The "$" is to make sure that this OccName is distinct from all user-defined ones