[project @ 2001-08-04 06:11:24 by ken]
[ghc-hetmet.git] / ghc / compiler / prelude / PrelNames.lhs
index c903b16..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,12 +181,14 @@ knownKeyNames
        word64TyConName,
 
        -- Others
+       unsafeCoerceName,
        otherwiseIdName,
        plusIntegerName,
        timesIntegerName,
        eqStringName,
        assertName,
-       runSTRepName
+       runSTRepName,
+       printName
     ]
 \end{code}
 
@@ -184,12 +212,14 @@ pREL_TUP_Name     = mkModuleName "PrelTup"
 pREL_PACK_Name    = mkModuleName "PrelPack"
 pREL_CONC_Name    = mkModuleName "PrelConc"
 pREL_IO_BASE_Name = mkModuleName "PrelIOBase"
+pREL_IO_Name     = mkModuleName "PrelIO"
 pREL_ST_Name     = mkModuleName "PrelST"
 pREL_ARR_Name     = mkModuleName "PrelArr"
 pREL_BYTEARR_Name = mkModuleName "PrelByteArr"
 pREL_FOREIGN_Name = mkModuleName "PrelForeign"
 pREL_STABLE_Name  = mkModuleName "PrelStable"
 pREL_ADDR_Name    = mkModuleName "PrelAddr"
+pREL_PTR_Name     = mkModuleName "PrelPtr"
 pREL_ERR_Name     = mkModuleName "PrelErr"
 pREL_REAL_Name    = mkModuleName "PrelReal"
 pREL_FLOAT_Name   = mkModuleName "PrelFloat"
@@ -199,9 +229,13 @@ mAIN_Name    = mkModuleName "Main"
 pREL_INT_Name    = mkModuleName "PrelInt"
 pREL_WORD_Name   = mkModuleName "PrelWord"
 
+fOREIGNOBJ_Name          = mkModuleName "ForeignObj"
+aDDR_Name        = mkModuleName "Addr"
+
 pREL_GHC       = mkPrelModule pREL_GHC_Name
 pREL_BASE      = mkPrelModule pREL_BASE_Name
 pREL_ADDR      = mkPrelModule pREL_ADDR_Name
+pREL_PTR       = mkPrelModule pREL_PTR_Name
 pREL_STABLE    = mkPrelModule pREL_STABLE_Name
 pREL_IO_BASE   = mkPrelModule pREL_IO_BASE_Name
 pREL_PACK      = mkPrelModule pREL_PACK_Name
@@ -209,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}
 
 %************************************************************************
@@ -273,8 +309,8 @@ usOnceTyConName  = kindQual SLIT(".") usOnceTyConKey
 usManyTyConName  = kindQual SLIT("!") usManyTyConKey
 superKindName    = kindQual SLIT("KX") kindConKey
 superBoxityName  = kindQual SLIT("BX") boxityConKey
-boxedConName     = kindQual SLIT("*") boxedConKey
-unboxedConName   = kindQual SLIT("#") unboxedConKey
+liftedConName    = kindQual SLIT("*") liftedConKey
+unliftedConName  = kindQual SLIT("#") unliftedConKey
 openKindConName  = kindQual SLIT("?") anyBoxConKey
 usageKindConName = kindQual SLIT("$") usageConKey
 typeConName     = kindQual SLIT("Type") typeConKey
@@ -328,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
@@ -366,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
@@ -418,31 +455,41 @@ 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
 
 -- Int, Word, and Addr things
 int8TyConName     = tcQual pREL_INT_Name  SLIT("Int8") int8TyConKey
 int16TyConName    = tcQual pREL_INT_Name  SLIT("Int16") int16TyConKey
 int32TyConName    = tcQual pREL_INT_Name  SLIT("Int32") int32TyConKey
-int64TyConName    = tcQual pREL_ADDR_Name SLIT("Int64") int64TyConKey
+int64TyConName    = tcQual pREL_INT_Name  SLIT("Int64") int64TyConKey
+
+word8TyConName    = tcQual pREL_WORD_Name SLIT("Word8")  word8TyConKey
+word16TyConName   = tcQual pREL_WORD_Name SLIT("Word16") word16TyConKey
+word32TyConName   = tcQual pREL_WORD_Name SLIT("Word32") word32TyConKey
+word64TyConName   = tcQual pREL_WORD_Name SLIT("Word64") word64TyConKey
 
-wordTyConName     = tcQual   pREL_ADDR_Name SLIT("Word")   wordTyConKey
-wordDataConName   = dataQual pREL_ADDR_Name SLIT("W#")     wordDataConKey
-word8TyConName    = tcQual   pREL_WORD_Name SLIT("Word8")  word8TyConKey
-word16TyConName   = tcQual   pREL_WORD_Name SLIT("Word16") word16TyConKey
-word32TyConName   = tcQual   pREL_WORD_Name SLIT("Word32") word32TyConKey
-word64TyConName   = tcQual   pREL_ADDR_Name SLIT("Word64") word64TyConKey
+wordTyConName     = tcQual   pREL_WORD_Name SLIT("Word")   wordTyConKey
+wordDataConName   = dataQual pREL_WORD_Name SLIT("W#")     wordDataConKey
 
-addrTyConName    = tcQual   pREL_ADDR_Name SLIT("Addr") addrTyConKey
-addrDataConName   = dataQual pREL_ADDR_Name SLIT("A#") addrDataConKey
+addrTyConName    = tcQual   aDDR_Name SLIT("Addr") addrTyConKey
+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
 
 -- Forign objects and weak pointers
-foreignObjTyConName   = tcQual   pREL_IO_BASE_Name SLIT("ForeignObj") foreignObjTyConKey
-foreignObjDataConName = dataQual pREL_IO_BASE_Name SLIT("ForeignObj") foreignObjDataConKey
+foreignObjTyConName   = tcQual   fOREIGNOBJ_Name SLIT("ForeignObj") foreignObjTyConKey
+foreignObjDataConName = dataQual fOREIGNOBJ_Name SLIT("ForeignObj") foreignObjDataConKey
 foreignPtrTyConName   = tcQual   pREL_FOREIGN_Name SLIT("ForeignPtr") foreignPtrTyConKey
 foreignPtrDataConName = dataQual pREL_FOREIGN_Name SLIT("ForeignPtr") foreignPtrDataConKey
 stablePtrTyConName    = tcQual   pREL_STABLE_Name SLIT("StablePtr") stablePtrTyConKey
@@ -681,24 +728,26 @@ word16TyConKey                            = mkPreludeTyConUnique 60
 word32TyConKey                         = mkPreludeTyConUnique 61
 word64PrimTyConKey                     = mkPreludeTyConUnique 62
 word64TyConKey                         = mkPreludeTyConUnique 63
-boxedConKey                            = mkPreludeTyConUnique 64
-unboxedConKey                          = mkPreludeTyConUnique 65
+liftedConKey                           = mkPreludeTyConUnique 64
+unliftedConKey                         = mkPreludeTyConUnique 65
 anyBoxConKey                           = mkPreludeTyConUnique 66
 kindConKey                             = mkPreludeTyConUnique 67
 boxityConKey                           = mkPreludeTyConUnique 68
 typeConKey                             = mkPreludeTyConUnique 69
 threadIdPrimTyConKey                   = mkPreludeTyConUnique 70
 bcoPrimTyConKey                                = mkPreludeTyConUnique 71
+ptrTyConKey                            = mkPreludeTyConUnique 72
+funPtrTyConKey                         = mkPreludeTyConUnique 73
 
 -- Usage type constructors
-usageConKey                            = mkPreludeTyConUnique 72
-usOnceTyConKey                         = mkPreludeTyConUnique 73
-usManyTyConKey                         = mkPreludeTyConUnique 74
+usageConKey                            = mkPreludeTyConUnique 74
+usOnceTyConKey                         = mkPreludeTyConUnique 75
+usManyTyConKey                         = mkPreludeTyConUnique 76
 
 -- Generic Type Constructors
-crossTyConKey                          = mkPreludeTyConUnique 75
-plusTyConKey                           = mkPreludeTyConUnique 76
-genUnitTyConKey                                = mkPreludeTyConUnique 77
+crossTyConKey                          = mkPreludeTyConUnique 77
+plusTyConKey                           = mkPreludeTyConUnique 78
+genUnitTyConKey                                = mkPreludeTyConUnique 79
 \end{code}
 
 %************************************************************************
@@ -726,12 +775,14 @@ stableNameDataConKey                      = mkPreludeDataConUnique 14
 trueDataConKey                         = mkPreludeDataConUnique 15
 wordDataConKey                         = mkPreludeDataConUnique 16
 ioDataConKey                           = mkPreludeDataConUnique 17
+ptrDataConKey                          = mkPreludeDataConUnique 18
+funPtrDataConKey                       = mkPreludeDataConUnique 19
 
 -- Generic data constructors
-crossDataConKey                                = mkPreludeDataConUnique 17
-inlDataConKey                          = mkPreludeDataConUnique 18
-inrDataConKey                          = mkPreludeDataConUnique 19
-genUnitDataConKey                      = mkPreludeDataConUnique 20
+crossDataConKey                                = mkPreludeDataConUnique 20
+inlDataConKey                          = mkPreludeDataConUnique 21
+inrDataConKey                          = mkPreludeDataConUnique 22
+genUnitDataConKey                      = mkPreludeDataConUnique 23
 \end{code}
 
 %************************************************************************
@@ -758,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
@@ -781,6 +833,8 @@ newStablePtrIdKey         = mkPreludeMiscIdUnique 39
 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
@@ -788,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
@@ -798,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:
@@ -962,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}