X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2FbasicTypes%2FName.lhs;h=035a499b4c5f5422489c1621e5bee25e500841be;hb=5bca72372c6596012685063cb14cc4c6848fbc74;hp=6993cec2f740abb2a983a1711598f0e9d1210aab;hpb=157cecc7a3d99864c40acecfabcd8922cb9dc4b7;p=ghc-hetmet.git diff --git a/ghc/compiler/basicTypes/Name.lhs b/ghc/compiler/basicTypes/Name.lhs index 6993cec..035a499 100644 --- a/ghc/compiler/basicTypes/Name.lhs +++ b/ghc/compiler/basicTypes/Name.lhs @@ -10,7 +10,8 @@ module Name ( -- The Name type Name, -- Abstract - mkInternalName, mkSystemName, mkFCallName, + mkInternalName, mkSystemName, + mkSystemNameEncoded, mkSystemTvNameEncoded, mkFCallName, mkIPName, mkExternalName, mkKnownKeyExternalName, mkWiredInName, @@ -175,9 +176,21 @@ mkKnownKeyExternalName rdr_name uniq mkWiredInName :: Module -> OccName -> Unique -> Name mkWiredInName mod occ uniq = mkExternalName uniq mod occ builtinSrcLoc -mkSystemName :: Unique -> EncodedFS -> Name +mkSystemName :: Unique -> UserFS -> Name mkSystemName uniq fs = Name { n_uniq = uniq, n_sort = System, - n_occ = mkVarOcc fs, n_loc = noSrcLoc } + n_occ = mkVarOcc fs, n_loc = noSrcLoc } + +-- Use this version when the string is already encoded. Avoids duplicating +-- the string each time a new name is created. +mkSystemNameEncoded :: Unique -> EncodedFS -> Name +mkSystemNameEncoded uniq fs = Name { n_uniq = uniq, n_sort = System, + n_occ = mkSysOccFS varName fs, + n_loc = noSrcLoc } + +mkSystemTvNameEncoded :: Unique -> EncodedFS -> Name +mkSystemTvNameEncoded uniq fs = Name { n_uniq = uniq, n_sort = System, + n_occ = mkSysOccFS tvName fs, + n_loc = noSrcLoc } mkFCallName :: Unique -> EncodedString -> Name -- The encoded string completely describes the ccall