[project @ 2001-08-04 06:11:24 by ken]
[ghc-hetmet.git] / ghc / compiler / prelude / PrelNames.lhs
index 91530c6..0f45777 100644 (file)
@@ -36,8 +36,10 @@ module PrelNames (
 
 #include "HsVersions.h"
 
-import Module    ( ModuleName, mkPrelModule, mkModuleName )
-import OccName   ( NameSpace, UserFS, varName, dataName, tcName, clsName, mkKindOccFS )
+import Module    ( ModuleName, mkPrelModule, mkHomeModule, mkModuleName )
+import OccName   ( NameSpace, UserFS, varName, dataName, tcName, clsName, 
+                   mkKindOccFS, mkOccFS
+                 )
 import RdrName   ( RdrName, mkOrig, mkUnqual )
 import UniqFM
 import Unique    ( Unique, Uniquable(..), hasKey,
@@ -48,7 +50,7 @@ import BasicTypes ( Boxity(..), Arity )
 import UniqFM    ( UniqFM, listToUFM )
 import Name      ( Name, mkLocalName, mkKnownKeyGlobal, nameRdrName )
 import RdrName    ( rdrNameOcc )
-import SrcLoc     ( builtinSrcLoc )
+import SrcLoc     ( builtinSrcLoc, noSrcLoc )
 import Util      ( nOfThem )
 import Panic     ( panic )
 \end{code}
@@ -56,6 +58,29 @@ import Panic   ( panic )
 
 %************************************************************************
 %*                                                                     *
+\subsection{Local Names}
+%*                                                                     *
+%************************************************************************
+
+This *local* name is used by the interactive stuff
+
+\begin{code}
+itName uniq = mkLocalName uniq (mkOccFS varName SLIT("it")) noSrcLoc
+\end{code}
+
+\begin{code}
+-- mkUnboundName makes a place-holder Name; it shouldn't be looked at except possibly
+-- during compiler debugging.
+mkUnboundName :: RdrName -> Name
+mkUnboundName rdr_name = mkLocalName unboundKey (rdrNameOcc rdr_name) builtinSrcLoc
+
+isUnboundName :: Name -> Bool
+isUnboundName name = name `hasKey` unboundKey
+\end{code}
+
+
+%************************************************************************
+%*                                                                     *
 \subsection{Known key Names}
 %*                                                                     *
 %************************************************************************
@@ -107,8 +132,8 @@ knownKeyNames
        cReturnableClassName,           -- mentioned, ccallish
 
        -- ClassOps 
-       fromIntName,
        fromIntegerName,
+       negateName,
        geName,
        minusName,
        enumFromName,
@@ -127,6 +152,7 @@ knownKeyNames
        newStablePtrName,
        bindIOName,
        returnIOName,
+       failIOName,
 
        -- Strings and lists
        mapName,
@@ -155,6 +181,7 @@ knownKeyNames
        word64TyConName,
 
        -- Others
+       unsafeCoerceName,
        otherwiseIdName,
        plusIntegerName,
        timesIntegerName,
@@ -216,6 +243,8 @@ pREL_ERR            = mkPrelModule pREL_ERR_Name
 pREL_NUM       = mkPrelModule pREL_NUM_Name
 pREL_REAL      = mkPrelModule pREL_REAL_Name
 pREL_FLOAT     = mkPrelModule pREL_FLOAT_Name
+
+iNTERACTIVE     = mkHomeModule (mkModuleName "$Interactive")
 \end{code}
 
 %************************************************************************
@@ -335,6 +364,7 @@ genUnitTyConName   = tcQual   pREL_BASE_Name SLIT("Unit") genUnitTyConKey
 genUnitDataConName = dataQual pREL_BASE_Name SLIT("Unit") genUnitDataConKey
 
 -- Random PrelBase functions
+unsafeCoerceName  = varQual pREL_BASE_Name SLIT("unsafeCoerce") unsafeCoerceIdKey
 otherwiseIdName   = varQual pREL_BASE_Name SLIT("otherwise") otherwiseIdKey
 appendName       = varQual pREL_BASE_Name SLIT("++") appendIdKey
 foldrName        = varQual pREL_BASE_Name SLIT("foldr") foldrIdKey
@@ -373,9 +403,9 @@ readClassName         = clsQual pREL_READ_Name SLIT("Read") readClassKey
 
 -- Module PrelNum
 numClassName     = clsQual pREL_NUM_Name SLIT("Num") numClassKey
-fromIntName      = varQual pREL_NUM_Name SLIT("fromInt") fromIntClassOpKey
 fromIntegerName   = varQual pREL_NUM_Name SLIT("fromInteger") fromIntegerClassOpKey
 minusName        = varQual pREL_NUM_Name SLIT("-") minusClassOpKey
+negateName       = varQual pREL_NUM_Name SLIT("negate") negateClassOpKey
 plusIntegerName   = varQual pREL_NUM_Name SLIT("plusInteger") plusIntegerIdKey
 timesIntegerName  = varQual pREL_NUM_Name SLIT("timesInteger") timesIntegerIdKey
 integerTyConName  = tcQual  pREL_NUM_Name SLIT("Integer") integerTyConKey
@@ -425,6 +455,7 @@ ioTyConName   = tcQual   pREL_IO_BASE_Name SLIT("IO") ioTyConKey
 ioDataConName     = dataQual pREL_IO_BASE_Name SLIT("IO") ioDataConKey
 bindIOName       = varQual  pREL_IO_BASE_Name SLIT("bindIO") bindIOIdKey
 returnIOName     = varQual  pREL_IO_BASE_Name SLIT("returnIO") returnIOIdKey
+failIOName       = varQual  pREL_IO_BASE_Name SLIT("failIO") failIOIdKey
 
 -- IO things
 printName        = varQual pREL_IO_Name SLIT("print") printIdKey
@@ -449,6 +480,9 @@ addrDataConName   = dataQual aDDR_Name SLIT("A#") addrDataConKey
 ptrTyConName     = tcQual   pREL_PTR_Name SLIT("Ptr") ptrTyConKey
 ptrDataConName    = dataQual pREL_PTR_Name SLIT("Ptr") ptrDataConKey
 
+funPtrTyConName          = tcQual   pREL_PTR_Name SLIT("FunPtr") funPtrTyConKey
+funPtrDataConName = dataQual pREL_PTR_Name SLIT("FunPtr") funPtrDataConKey
+
 -- Byte array types
 byteArrayTyConName       = tcQual pREL_BYTEARR_Name  SLIT("ByteArray") byteArrayTyConKey
 mutableByteArrayTyConName = tcQual pREL_BYTEARR_Name  SLIT("MutableByteArray") mutableByteArrayTyConKey
@@ -456,8 +490,8 @@ mutableByteArrayTyConName = tcQual pREL_BYTEARR_Name  SLIT("MutableByteArray") m
 -- Forign objects and weak pointers
 foreignObjTyConName   = tcQual   fOREIGNOBJ_Name SLIT("ForeignObj") foreignObjTyConKey
 foreignObjDataConName = dataQual fOREIGNOBJ_Name SLIT("ForeignObj") foreignObjDataConKey
-foreignPtrTyConName   = tcQual   pREL_IO_BASE_Name SLIT("ForeignPtr") foreignPtrTyConKey
-foreignPtrDataConName = dataQual pREL_IO_BASE_Name SLIT("ForeignPtr") foreignPtrDataConKey
+foreignPtrTyConName   = tcQual   pREL_FOREIGN_Name SLIT("ForeignPtr") foreignPtrTyConKey
+foreignPtrDataConName = dataQual pREL_FOREIGN_Name SLIT("ForeignPtr") foreignPtrDataConKey
 stablePtrTyConName    = tcQual   pREL_STABLE_Name SLIT("StablePtr") stablePtrTyConKey
 stablePtrDataConName  = dataQual pREL_STABLE_Name SLIT("StablePtr") stablePtrDataConKey
 deRefStablePtrName    = varQual  pREL_STABLE_Name SLIT("deRefStablePtr") deRefStablePtrIdKey
@@ -703,16 +737,17 @@ typeConKey                                = mkPreludeTyConUnique 69
 threadIdPrimTyConKey                   = mkPreludeTyConUnique 70
 bcoPrimTyConKey                                = mkPreludeTyConUnique 71
 ptrTyConKey                            = mkPreludeTyConUnique 72
+funPtrTyConKey                         = mkPreludeTyConUnique 73
 
 -- Usage type constructors
-usageConKey                            = mkPreludeTyConUnique 73
-usOnceTyConKey                         = mkPreludeTyConUnique 74
-usManyTyConKey                         = mkPreludeTyConUnique 75
+usageConKey                            = mkPreludeTyConUnique 74
+usOnceTyConKey                         = mkPreludeTyConUnique 75
+usManyTyConKey                         = mkPreludeTyConUnique 76
 
 -- Generic Type Constructors
-crossTyConKey                          = mkPreludeTyConUnique 76
-plusTyConKey                           = mkPreludeTyConUnique 77
-genUnitTyConKey                                = mkPreludeTyConUnique 78
+crossTyConKey                          = mkPreludeTyConUnique 77
+plusTyConKey                           = mkPreludeTyConUnique 78
+genUnitTyConKey                                = mkPreludeTyConUnique 79
 \end{code}
 
 %************************************************************************
@@ -741,12 +776,13 @@ trueDataConKey                            = mkPreludeDataConUnique 15
 wordDataConKey                         = mkPreludeDataConUnique 16
 ioDataConKey                           = mkPreludeDataConUnique 17
 ptrDataConKey                          = mkPreludeDataConUnique 18
+funPtrDataConKey                       = mkPreludeDataConUnique 19
 
 -- Generic data constructors
-crossDataConKey                                = mkPreludeDataConUnique 19
-inlDataConKey                          = mkPreludeDataConUnique 20
-inrDataConKey                          = mkPreludeDataConUnique 21
-genUnitDataConKey                      = mkPreludeDataConUnique 22
+crossDataConKey                                = mkPreludeDataConUnique 20
+inlDataConKey                          = mkPreludeDataConUnique 21
+inrDataConKey                          = mkPreludeDataConUnique 22
+genUnitDataConKey                      = mkPreludeDataConUnique 23
 \end{code}
 
 %************************************************************************
@@ -773,6 +809,7 @@ irrefutPatErrorIdKey              = mkPreludeMiscIdUnique 15
 eqStringIdKey                = mkPreludeMiscIdUnique 16
 noMethodBindingErrorIdKey     = mkPreludeMiscIdUnique 17
 nonExhaustiveGuardsErrorIdKey = mkPreludeMiscIdUnique 18
+errorCStringIdKey            = mkPreludeMiscIdUnique 19 
 parErrorIdKey                = mkPreludeMiscIdUnique 20
 parIdKey                     = mkPreludeMiscIdUnique 21
 patErrorIdKey                = mkPreludeMiscIdUnique 22
@@ -797,6 +834,7 @@ getTagIdKey               = mkPreludeMiscIdUnique 40
 plusIntegerIdKey             = mkPreludeMiscIdUnique 41
 timesIntegerIdKey            = mkPreludeMiscIdUnique 42
 printIdKey                   = mkPreludeMiscIdUnique 43
+failIOIdKey                  = mkPreludeMiscIdUnique 44
 \end{code}
 
 Certain class operations from Prelude classes.  They get their own
@@ -804,7 +842,6 @@ uniques so we can look them up easily when we want to conjure them up
 during type checking.
 
 \begin{code}
-fromIntClassOpKey            = mkPreludeMiscIdUnique 101
 fromIntegerClassOpKey        = mkPreludeMiscIdUnique 102
 minusClassOpKey                      = mkPreludeMiscIdUnique 103
 fromRationalClassOpKey       = mkPreludeMiscIdUnique 104
@@ -814,6 +851,7 @@ enumFromToClassOpKey              = mkPreludeMiscIdUnique 107
 enumFromThenToClassOpKey      = mkPreludeMiscIdUnique 108
 eqClassOpKey                 = mkPreludeMiscIdUnique 109
 geClassOpKey                 = mkPreludeMiscIdUnique 110
+negateClassOpKey             = mkPreludeMiscIdUnique 111
 failMClassOpKey                      = mkPreludeMiscIdUnique 112
 thenMClassOpKey                      = mkPreludeMiscIdUnique 113 -- (>>=)
        -- Just a place holder for  unbound variables  produced by the renamer:
@@ -978,12 +1016,3 @@ noDictClassKeys   -- These classes are used only for type annotations;
   = cCallishClassKeys
 \end{code}
 
-\begin{code}
--- mkUnboundName makes a place-holder Name; it shouldn't be looked at except possibly
--- during compiler debugging.
-mkUnboundName :: RdrName -> Name
-mkUnboundName rdr_name = mkLocalName unboundKey (rdrNameOcc rdr_name) builtinSrcLoc
-
-isUnboundName :: Name -> Bool
-isUnboundName name = name `hasKey` unboundKey
-\end{code}