[project @ 2004-01-05 10:41:04 by simonpj]
authorsimonpj <unknown>
Mon, 5 Jan 2004 10:41:05 +0000 (10:41 +0000)
committersimonpj <unknown>
Mon, 5 Jan 2004 10:41:05 +0000 (10:41 +0000)
Fix globaliseId wibble which was killing ghci

ghc/compiler/basicTypes/Id.lhs
ghc/compiler/basicTypes/Var.lhs
ghc/compiler/typecheck/TcRnDriver.lhs

index 1a2cb50..7cda319 100644 (file)
@@ -19,7 +19,7 @@ module Id (
        recordSelectorFieldLabel,
 
        -- Modifying an Id
-       setIdName, setIdUnique, Id.setIdType, setIdLocalExported, setGlobalIdDetails,
+       setIdName, setIdUnique, Id.setIdType, setIdLocalExported, 
        setIdInfo, lazySetIdInfo, modifyIdInfo, maybeModifyIdInfo,
        zapLamIdInfo, zapDemandIdInfo, 
 
@@ -86,7 +86,7 @@ import Var            ( Id, DictId,
                          setIdName, setIdType, setIdUnique, setIdLocalExported,
                          setIdInfo, lazySetIdInfo, modifyIdInfo, 
                          maybeModifyIdInfo,
-                         globalIdDetails, setGlobalIdDetails
+                         globalIdDetails
                        )
 import qualified Var   ( mkLocalId, mkGlobalId, mkSpecPragmaId, mkExportedLocalId )
 import Type            ( Type, typePrimRep, addFreeTyVars, seqType)
index df030e2..06514e2 100644 (file)
@@ -21,7 +21,7 @@ module Var (
        setIdName, setIdUnique, setIdType, setIdInfo, lazySetIdInfo, 
        setIdLocalExported, zapSpecPragmaId,
 
-       globalIdDetails, setGlobalIdDetails, 
+       globalIdDetails, globaliseId, 
 
        mkLocalId, mkExportedLocalId, mkSpecPragmaId,
        mkGlobalId, 
@@ -221,9 +221,13 @@ setIdLocalExported :: Id -> Id
 -- It had better be a LocalId already
 setIdLocalExported id = id { lclDetails = Exported }
 
-setGlobalIdDetails :: Id -> GlobalIdDetails -> Id
--- It had better be a GlobalId already
-setGlobalIdDetails id details = id { gblDetails = details }
+globaliseId :: GlobalIdDetails -> Id -> Id
+-- If it's a local, make it global
+globaliseId details id = GlobalId { varName    = varName id,
+                                   realUnique = realUnique id,
+                                   idType     = idType id,
+                                   idInfo     = idInfo id,
+                                   gblDetails = details }
 
 zapSpecPragmaId :: Id -> Id
 zapSpecPragmaId id
index cbcd892..2643227 100644 (file)
@@ -95,7 +95,7 @@ import MkId           ( unsafeCoerceId )
 import TysWiredIn      ( mkListTy, unitTy )
 import IdInfo          ( GlobalIdDetails(..) )
 import SrcLoc          ( interactiveSrcLoc, unLoc )
-import Var             ( setGlobalIdDetails )
+import Var             ( globaliseId )
 import Name            ( nameOccName, nameModuleName )
 import NameEnv         ( delListFromNameEnv )
 import PrelNames       ( iNTERACTIVE, ioTyConName, printName, monadNames, itName, returnIOName )
@@ -244,8 +244,7 @@ tcRnStmt hsc_env ictxt rdr_stmt
                -- important: otherwise when we come to compile an expression
                -- using these ids later, the byte code generator will consider
                -- the occurrences to be free rather than global.
-       global_ids     = map globaliseId bound_ids ;
-       globaliseId id = setGlobalIdDetails id VanillaGlobal ;
+       global_ids     = map (globaliseId VanillaGlobal) bound_ids ;
     
                -- Update the interactive context
        rn_env   = ic_rn_local_env ictxt ;