#include "HsVersions.h"
-import Module ( ModuleName, mkPrelModule, mkModuleName )
-import OccName ( NameSpace, UserFS, varName, dataName, tcName, clsName, mkKindOccFS )
-import RdrName ( RdrName, mkOrig, mkRdrOrig, mkUnqual )
+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,
mkPreludeMiscIdUnique, mkPreludeDataConUnique,
import UniqFM ( UniqFM, listToUFM )
import Name ( Name, mkLocalName, mkKnownKeyGlobal, nameRdrName )
import RdrName ( rdrNameOcc )
-import SrcLoc ( noSrcLoc )
+import SrcLoc ( builtinSrcLoc, noSrcLoc )
import Util ( nOfThem )
import Panic ( panic )
\end{code}
%************************************************************************
%* *
+\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}
%* *
%************************************************************************
byteArrayTyConName,
mutableByteArrayTyConName,
foreignObjTyConName,
+ foreignPtrTyConName,
bcoPrimTyConName,
stablePtrTyConName,
stablePtrDataConName,
cReturnableClassName, -- mentioned, ccallish
-- ClassOps
- fromIntName,
fromIntegerName,
+ negateName,
geName,
minusName,
enumFromName,
newStablePtrName,
bindIOName,
returnIOName,
+ failIOName,
-- Strings and lists
mapName,
word64TyConName,
-- Others
+ unsafeCoerceName,
otherwiseIdName,
plusIntegerName,
timesIntegerName,
eqStringName,
assertName,
- runSTRepName
+ runSTRepName,
+ printName
]
\end{code}
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"
pREL_MAIN_Name = mkModuleName "PrelMain"
mAIN_Name = mkModuleName "Main"
-iNT_Name = mkModuleName "Int"
-wORD_Name = mkModuleName "Word"
+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
pREL_NUM = mkPrelModule pREL_NUM_Name
pREL_REAL = mkPrelModule pREL_REAL_Name
pREL_FLOAT = mkPrelModule pREL_FLOAT_Name
+
+iNTERACTIVE = mkHomeModule (mkModuleName "$Interactive")
\end{code}
%************************************************************************
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
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
-- 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
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 iNT_Name SLIT("Int8") int8TyConKey
-int16TyConName = tcQual iNT_Name SLIT("Int16") int16TyConKey
-int32TyConName = tcQual iNT_Name SLIT("Int32") int32TyConKey
-int64TyConName = tcQual pREL_ADDR_Name SLIT("Int64") int64TyConKey
+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_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_WORD_Name SLIT("Word") wordTyConKey
+wordDataConName = dataQual pREL_WORD_Name SLIT("W#") wordDataConKey
-wordTyConName = tcQual pREL_ADDR_Name SLIT("Word") wordTyConKey
-wordDataConName = dataQual pREL_ADDR_Name SLIT("W#") wordDataConKey
-word8TyConName = tcQual wORD_Name SLIT("Word8") word8TyConKey
-word16TyConName = tcQual wORD_Name SLIT("Word16") word16TyConKey
-word32TyConName = tcQual wORD_Name SLIT("Word32") word32TyConKey
-word64TyConName = tcQual pREL_ADDR_Name SLIT("Word64") word64TyConKey
+addrTyConName = tcQual aDDR_Name SLIT("Addr") addrTyConKey
+addrDataConName = dataQual aDDR_Name SLIT("A#") addrDataConKey
-addrTyConName = tcQual pREL_ADDR_Name SLIT("Addr") addrTyConKey
-addrDataConName = dataQual pREL_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
stablePtrDataConName = dataQual pREL_STABLE_Name SLIT("StablePtr") stablePtrDataConKey
deRefStablePtrName = varQual pREL_STABLE_Name SLIT("deRefStablePtr") deRefStablePtrIdKey
tcQual mod str uq = mkKnownKeyGlobal (tcQual_RDR mod str) uq
clsQual mod str uq = mkKnownKeyGlobal (clsQual_RDR mod str) uq
-kindQual str uq = mkKnownKeyGlobal (mkRdrOrig pREL_GHC_Name (mkKindOccFS tcName str)) uq
+kindQual str uq = mkLocalName uq (mkKindOccFS tcName str) builtinSrcLoc
-- Kinds are not z-encoded in interface file, hence mkKindOccFS
- -- And they all come from PrelGHC
+ -- And they don't come from any particular module; indeed we always
+ -- want to print them unqualified. Hence the LocalName
varQual_RDR mod str = mkOrig varName mod str
tcQual_RDR mod str = mkOrig tcName mod str
listTyConKey = mkPreludeTyConUnique 22
foreignObjPrimTyConKey = mkPreludeTyConUnique 23
foreignObjTyConKey = mkPreludeTyConUnique 24
-weakPrimTyConKey = mkPreludeTyConUnique 25
-mutableArrayPrimTyConKey = mkPreludeTyConUnique 26
-mutableByteArrayPrimTyConKey = mkPreludeTyConUnique 27
-orderingTyConKey = mkPreludeTyConUnique 28
-mVarPrimTyConKey = mkPreludeTyConUnique 29
-ratioTyConKey = mkPreludeTyConUnique 30
-rationalTyConKey = mkPreludeTyConUnique 31
-realWorldTyConKey = mkPreludeTyConUnique 32
-stablePtrPrimTyConKey = mkPreludeTyConUnique 33
-stablePtrTyConKey = mkPreludeTyConUnique 34
-statePrimTyConKey = mkPreludeTyConUnique 35
+foreignPtrTyConKey = mkPreludeTyConUnique 25
+weakPrimTyConKey = mkPreludeTyConUnique 26
+mutableArrayPrimTyConKey = mkPreludeTyConUnique 27
+mutableByteArrayPrimTyConKey = mkPreludeTyConUnique 28
+orderingTyConKey = mkPreludeTyConUnique 29
+mVarPrimTyConKey = mkPreludeTyConUnique 30
+ratioTyConKey = mkPreludeTyConUnique 31
+rationalTyConKey = mkPreludeTyConUnique 32
+realWorldTyConKey = mkPreludeTyConUnique 33
+stablePtrPrimTyConKey = mkPreludeTyConUnique 34
+stablePtrTyConKey = mkPreludeTyConUnique 35
+statePrimTyConKey = mkPreludeTyConUnique 36
stableNamePrimTyConKey = mkPreludeTyConUnique 50
stableNameTyConKey = mkPreludeTyConUnique 51
mutableByteArrayTyConKey = mkPreludeTyConUnique 52
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}
%************************************************************************
smallIntegerDataConKey = mkPreludeDataConUnique 7
largeIntegerDataConKey = mkPreludeDataConUnique 8
foreignObjDataConKey = mkPreludeDataConUnique 9
-nilDataConKey = mkPreludeDataConUnique 10
-ratioDataConKey = mkPreludeDataConUnique 11
-stablePtrDataConKey = mkPreludeDataConUnique 12
-stableNameDataConKey = mkPreludeDataConUnique 13
-trueDataConKey = mkPreludeDataConUnique 14
-wordDataConKey = mkPreludeDataConUnique 15
-ioDataConKey = mkPreludeDataConUnique 16
+foreignPtrDataConKey = mkPreludeDataConUnique 10
+nilDataConKey = mkPreludeDataConUnique 11
+ratioDataConKey = mkPreludeDataConUnique 12
+stablePtrDataConKey = mkPreludeDataConUnique 13
+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}
%************************************************************************
eqStringIdKey = mkPreludeMiscIdUnique 16
noMethodBindingErrorIdKey = mkPreludeMiscIdUnique 17
nonExhaustiveGuardsErrorIdKey = mkPreludeMiscIdUnique 18
+errorCStringIdKey = mkPreludeMiscIdUnique 19
parErrorIdKey = mkPreludeMiscIdUnique 20
parIdKey = mkPreludeMiscIdUnique 21
patErrorIdKey = mkPreludeMiscIdUnique 22
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
during type checking.
\begin{code}
-fromIntClassOpKey = mkPreludeMiscIdUnique 101
fromIntegerClassOpKey = mkPreludeMiscIdUnique 102
minusClassOpKey = mkPreludeMiscIdUnique 103
fromRationalClassOpKey = mkPreludeMiscIdUnique 104
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:
, byteArrayTyConKey
, mutableByteArrayTyConKey
, foreignObjTyConKey
+ , foreignPtrTyConKey
, stablePtrTyConKey
, int8TyConKey
, int16TyConKey
= 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) noSrcLoc
-
-isUnboundName :: Name -> Bool
-isUnboundName name = name `hasKey` unboundKey
-\end{code}