X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FbasicTypes%2FName.lhs;h=c3a1bd1fcdc980a56cce215a1925a193338297c0;hb=59300a7161f44b3a2afe381a6ccd914043a32c4f;hp=9f23f969e48083f1fadd476a132d6bd5ae889377;hpb=30ced40470d0bb2a14a8eb25dd77ca99edd88a5a;p=ghc-hetmet.git diff --git a/compiler/basicTypes/Name.lhs b/compiler/basicTypes/Name.lhs index 9f23f96..c3a1bd1 100644 --- a/compiler/basicTypes/Name.lhs +++ b/compiler/basicTypes/Name.lhs @@ -37,7 +37,7 @@ module Name ( BuiltInSyntax(..), -- ** Creating 'Name's - mkInternalName, mkSystemName, + mkInternalName, mkSystemName, mkDerivedInternalName, mkSystemVarName, mkSysTvName, mkFCallName, mkIPName, mkTickBoxOpName, @@ -83,6 +83,7 @@ import FastString import Outputable import Data.Array +import Data.Word ( Word32 ) \end{code} %************************************************************************ @@ -248,6 +249,11 @@ mkInternalName uniq occ loc = Name { n_uniq = getKeyFastInt uniq, n_sort = Inter -- * for interface files we tidyCore first, which puts the uniques -- into the print name (see setNameVisibility below) +mkDerivedInternalName :: (OccName -> OccName) -> Unique -> Name -> Name +mkDerivedInternalName derive_occ uniq (Name { n_occ = occ, n_loc = loc }) + = Name { n_uniq = getKeyFastInt uniq, n_sort = Internal + , n_occ = derive_occ occ, n_loc = loc } + -- | Create a name which definitely originates in the given module mkExternalName :: Unique -> Module -> OccName -> SrcSpan -> Name mkExternalName uniq mod occ loc @@ -368,7 +374,7 @@ instance Binary Name where get bh = do i <- get bh - return $! (ud_symtab (getUserData bh) ! i) + return $! (ud_symtab (getUserData bh) ! fromIntegral (i::Word32)) \end{code} %************************************************************************