[project @ 2000-04-29 22:44:26 by simonpj]
authorsimonpj <unknown>
Sat, 29 Apr 2000 22:44:26 +0000 (22:44 +0000)
committersimonpj <unknown>
Sat, 29 Apr 2000 22:44:26 +0000 (22:44 +0000)
Wibble in recent RnEnv changes

This meant that things fell over when you try to
build the Prelude.  Fixed now.

ghc/compiler/rename/RnEnv.lhs

index 16f69da..561fbdb 100644 (file)
@@ -22,7 +22,7 @@ import RnMonad
 import Name            ( Name, Provenance(..), ExportFlag(..), NamedThing(..),
                          ImportReason(..), getSrcLoc, 
                          mkLocalName, mkImportedLocalName, mkGlobalName, mkUnboundName,
-                         mkIPName, isSystemName,
+                         mkIPName, isSystemName, isWiredInName,
                          nameOccName, setNameModule, nameModule,
                          pprOccName, isLocallyDefined, nameUnique, nameOccName,
                           occNameUserString,
@@ -92,9 +92,15 @@ newTopBinder mod occ mk_prov
        --
        -- It also means that if there are two defns for the same thing
        -- in a module, then each gets a separate SrcLoc
+       --
+       -- There's a complication for wired-in names.  We don't want to
+       -- forget that they are wired in even when compiling that module
+       -- (else we spit out redundant defns into the interface file)
+       -- So for them we just set the provenance
 
        Just name -> let 
-                       new_name  = mkGlobalName (nameUnique name) mod occ (mk_prov new_name)
+                       new_name  | isWiredInName name = setNameProvenance name (mk_prov name)
+                                 | otherwise          = mkGlobalName (nameUnique name) mod occ (mk_prov name)
                        new_cache = addToFM cache key new_name
                     in
                     setNameSupplyRn (us, inst_ns, new_cache, ipcache)  `thenRn_`