#include "HsVersions.h"
-import Module ( ModuleName, mkPrelModule, mkModuleName )
-import OccName ( NameSpace, varName, dataName, tcName, clsName )
-import RdrName ( RdrName, mkPreludeQual )
+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,
fromRationalName,
deRefStablePtrName,
- makeStablePtrName,
+ 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}
%************************************************************************
%************************************************************************
\begin{code}
-mkTupNameStr :: Boxity -> Int -> (ModuleName, FAST_STRING)
+mkTupNameStr :: Boxity -> Int -> (ModuleName, UserFS)
mkTupNameStr Boxed 0 = (pREL_BASE_Name, SLIT("()"))
mkTupNameStr Boxed 1 = panic "Name.mkTupNameStr: 1 ???"
mkTupConRdrName :: NameSpace -> Boxity -> Arity -> RdrName
mkTupConRdrName space boxity arity = case mkTupNameStr boxity arity of
- (mod, occ) -> mkPreludeQual space mod occ
+ (mod, occ) -> mkOrig space mod occ
+\end{code}
+
+
+%************************************************************************
+%* *
+\subsection{Unqualified RdrNames}
+%* *
+%************************************************************************
+
+\begin{code}
+main_RDR_Unqual :: RdrName
+main_RDR_Unqual = mkUnqual varName SLIT("main")
+-- Don't get a RdrName from PrelNames.mainName, because nameRdrName
+-- gets an Orig RdrName, and we want a Qual or Unqual one. An Unqual
+-- one will do fine.
\end{code}
%* *
%************************************************************************
-These RdrNames are not really "built in", but some parts of the
+Many of these Names are not really "built in", but some parts of the
compiler (notably the deriving mechanism) need to mention their names,
and it's convenient to write them all down in one place.
mainName = varQual mAIN_Name SLIT("main") mainKey
-- Stuff from PrelGHC
-funTyConName = tcQual pREL_GHC_Name SLIT("(->)") funTyConKey
-cCallableClassName = clsQual pREL_GHC_Name SLIT("CCallable") cCallableClassKey
-cReturnableClassName = clsQual pREL_GHC_Name SLIT("CReturnable") cReturnableClassKey
+usOnceTyConName = kindQual SLIT(".") usOnceTyConKey
+usManyTyConName = kindQual SLIT("!") usManyTyConKey
+superKindName = kindQual SLIT("KX") kindConKey
+superBoxityName = kindQual SLIT("BX") boxityConKey
+liftedConName = kindQual SLIT("*") liftedConKey
+unliftedConName = kindQual SLIT("#") unliftedConKey
+openKindConName = kindQual SLIT("?") anyBoxConKey
+usageKindConName = kindQual SLIT("$") usageConKey
+typeConName = kindQual SLIT("Type") typeConKey
+
+funTyConName = tcQual pREL_GHC_Name SLIT("(->)") funTyConKey
+charPrimTyConName = tcQual pREL_GHC_Name SLIT("Char#") charPrimTyConKey
+intPrimTyConName = tcQual pREL_GHC_Name SLIT("Int#") intPrimTyConKey
+int64PrimTyConName = tcQual pREL_GHC_Name SLIT("Int64#") int64PrimTyConKey
+wordPrimTyConName = tcQual pREL_GHC_Name SLIT("Word#") wordPrimTyConKey
+word64PrimTyConName = tcQual pREL_GHC_Name SLIT("Word64#") word64PrimTyConKey
+addrPrimTyConName = tcQual pREL_GHC_Name SLIT("Addr#") addrPrimTyConKey
+floatPrimTyConName = tcQual pREL_GHC_Name SLIT("Float#") floatPrimTyConKey
+doublePrimTyConName = tcQual pREL_GHC_Name SLIT("Double#") doublePrimTyConKey
+statePrimTyConName = tcQual pREL_GHC_Name SLIT("State#") statePrimTyConKey
+realWorldTyConName = tcQual pREL_GHC_Name SLIT("RealWorld") realWorldTyConKey
+arrayPrimTyConName = tcQual pREL_GHC_Name SLIT("Array#") arrayPrimTyConKey
+byteArrayPrimTyConName = tcQual pREL_GHC_Name SLIT("ByteArray#") byteArrayPrimTyConKey
+mutableArrayPrimTyConName = tcQual pREL_GHC_Name SLIT("MutableArray#") mutableArrayPrimTyConKey
+mutableByteArrayPrimTyConName = tcQual pREL_GHC_Name SLIT("MutableByteArray#") mutableByteArrayPrimTyConKey
+mutVarPrimTyConName = tcQual pREL_GHC_Name SLIT("MutVar#") mutVarPrimTyConKey
+mVarPrimTyConName = tcQual pREL_GHC_Name SLIT("MVar#") mVarPrimTyConKey
+stablePtrPrimTyConName = tcQual pREL_GHC_Name SLIT("StablePtr#") stablePtrPrimTyConKey
+stableNamePrimTyConName = tcQual pREL_GHC_Name SLIT("StableName#") stableNamePrimTyConKey
+foreignObjPrimTyConName = tcQual pREL_GHC_Name SLIT("ForeignObj#") foreignObjPrimTyConKey
+bcoPrimTyConName = tcQual pREL_GHC_Name SLIT("BCO#") bcoPrimTyConKey
+weakPrimTyConName = tcQual pREL_GHC_Name SLIT("Weak#") weakPrimTyConKey
+threadIdPrimTyConName = tcQual pREL_GHC_Name SLIT("ThreadId#") threadIdPrimTyConKey
+cCallableClassName = clsQual pREL_GHC_Name SLIT("CCallable") cCallableClassKey
+cReturnableClassName = clsQual pREL_GHC_Name SLIT("CReturnable") cReturnableClassKey
-- PrelBase data types and constructors
charTyConName = tcQual pREL_BASE_Name SLIT("Char") charTyConKey
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_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
+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
-bcoPrimTyConName = tcQual pREL_BASE_Name SLIT("BCO#") bcoPrimTyConKey
+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
-makeStablePtrName = varQual pREL_STABLE_Name SLIT("makeStablePtr") makeStablePtrIdKey
+newStablePtrName = varQual pREL_STABLE_Name SLIT("newStablePtr") newStablePtrIdKey
errorName = varQual pREL_ERR_Name SLIT("error") errorIdKey
assertName = varQual pREL_GHC_Name SLIT("assert") assertIdKey
pre-assigned keys. Mostly these names are used in generating deriving
code, which is passed through the renamer anyway.
+ THEY ARE ALL ORIGINAL NAMES, HOWEVER
+
+\begin{code}
+-- Lists and tuples
+tupleCon_RDR, tupleTyCon_RDR :: Int -> RdrName
+ubxTupleCon_RDR, ubxTupleTyCon_RDR :: Int -> RdrName
+
+tupleCon_RDR = mkTupConRdrName dataName Boxed
+tupleTyCon_RDR = mkTupConRdrName tcName Boxed
+ubxTupleCon_RDR = mkTupConRdrName dataName Unboxed
+ubxTupleTyCon_RDR = mkTupConRdrName tcName Unboxed
+
+unitCon_RDR = dataQual_RDR pREL_BASE_Name SLIT("()")
+unitTyCon_RDR = tcQual_RDR pREL_BASE_Name SLIT("()")
+
+and_RDR = varQual_RDR pREL_BASE_Name SLIT("&&")
+not_RDR = varQual_RDR pREL_BASE_Name SLIT("not")
+compose_RDR = varQual_RDR pREL_BASE_Name SLIT(".")
+ne_RDR = varQual_RDR pREL_BASE_Name SLIT("/=")
+le_RDR = varQual_RDR pREL_BASE_Name SLIT("<=")
+lt_RDR = varQual_RDR pREL_BASE_Name SLIT("<")
+gt_RDR = varQual_RDR pREL_BASE_Name SLIT(">")
+ltTag_RDR = dataQual_RDR pREL_BASE_Name SLIT("LT")
+eqTag_RDR = dataQual_RDR pREL_BASE_Name SLIT("EQ")
+gtTag_RDR = dataQual_RDR pREL_BASE_Name SLIT("GT")
+max_RDR = varQual_RDR pREL_BASE_Name SLIT("max")
+min_RDR = varQual_RDR pREL_BASE_Name SLIT("min")
+compare_RDR = varQual_RDR pREL_BASE_Name SLIT("compare")
+showList_RDR = varQual_RDR pREL_SHOW_Name SLIT("showList")
+showList___RDR = varQual_RDR pREL_SHOW_Name SLIT("showList__")
+showsPrec_RDR = varQual_RDR pREL_SHOW_Name SLIT("showsPrec")
+showSpace_RDR = varQual_RDR pREL_SHOW_Name SLIT("showSpace")
+showString_RDR = varQual_RDR pREL_SHOW_Name SLIT("showString")
+showParen_RDR = varQual_RDR pREL_SHOW_Name SLIT("showParen")
+readsPrec_RDR = varQual_RDR pREL_READ_Name SLIT("readsPrec")
+readList_RDR = varQual_RDR pREL_READ_Name SLIT("readList")
+readParen_RDR = varQual_RDR pREL_READ_Name SLIT("readParen")
+lex_RDR = varQual_RDR pREL_READ_Name SLIT("lex")
+readList___RDR = varQual_RDR pREL_READ_Name SLIT("readList__")
+times_RDR = varQual_RDR pREL_NUM_Name SLIT("*")
+plus_RDR = varQual_RDR pREL_NUM_Name SLIT("+")
+negate_RDR = varQual_RDR pREL_NUM_Name SLIT("negate")
+range_RDR = varQual_RDR pREL_ARR_Name SLIT("range")
+index_RDR = varQual_RDR pREL_ARR_Name SLIT("index")
+inRange_RDR = varQual_RDR pREL_ARR_Name SLIT("inRange")
+succ_RDR = varQual_RDR pREL_ENUM_Name SLIT("succ")
+pred_RDR = varQual_RDR pREL_ENUM_Name SLIT("pred")
+minBound_RDR = varQual_RDR pREL_ENUM_Name SLIT("minBound")
+maxBound_RDR = varQual_RDR pREL_ENUM_Name SLIT("maxBound")
+assertErr_RDR = varQual_RDR pREL_ERR_Name SLIT("assertError")
+\end{code}
+
+These RDR names also have known keys, so we need to get back the RDR names to
+populate the occurrence list above.
+
\begin{code}
-and_RDR = varQual_RDR pREL_BASE_Name SLIT("&&")
-not_RDR = varQual_RDR pREL_BASE_Name SLIT("not")
-compose_RDR = varQual_RDR pREL_BASE_Name SLIT(".")
-ne_RDR = varQual_RDR pREL_BASE_Name SLIT("/=")
-le_RDR = varQual_RDR pREL_BASE_Name SLIT("<=")
-lt_RDR = varQual_RDR pREL_BASE_Name SLIT("<")
-gt_RDR = varQual_RDR pREL_BASE_Name SLIT(">")
-ltTag_RDR = dataQual_RDR pREL_BASE_Name SLIT("LT")
-eqTag_RDR = dataQual_RDR pREL_BASE_Name SLIT("EQ")
-gtTag_RDR = dataQual_RDR pREL_BASE_Name SLIT("GT")
-max_RDR = varQual_RDR pREL_BASE_Name SLIT("max")
-min_RDR = varQual_RDR pREL_BASE_Name SLIT("min")
-compare_RDR = varQual_RDR pREL_BASE_Name SLIT("compare")
-showList_RDR = varQual_RDR pREL_SHOW_Name SLIT("showList")
-showList___RDR = varQual_RDR pREL_SHOW_Name SLIT("showList__")
-showsPrec_RDR = varQual_RDR pREL_SHOW_Name SLIT("showsPrec")
-showSpace_RDR = varQual_RDR pREL_SHOW_Name SLIT("showSpace")
-showString_RDR = varQual_RDR pREL_SHOW_Name SLIT("showString")
-showParen_RDR = varQual_RDR pREL_SHOW_Name SLIT("showParen")
-readsPrec_RDR = varQual_RDR pREL_READ_Name SLIT("readsPrec")
-readList_RDR = varQual_RDR pREL_READ_Name SLIT("readList")
-readParen_RDR = varQual_RDR pREL_READ_Name SLIT("readParen")
-lex_RDR = varQual_RDR pREL_READ_Name SLIT("lex")
-readList___RDR = varQual_RDR pREL_READ_Name SLIT("readList__")
-times_RDR = varQual_RDR pREL_NUM_Name SLIT("*")
-plus_RDR = varQual_RDR pREL_NUM_Name SLIT("+")
-negate_RDR = varQual_RDR pREL_NUM_Name SLIT("negate")
-range_RDR = varQual_RDR pREL_ARR_Name SLIT("range")
-index_RDR = varQual_RDR pREL_ARR_Name SLIT("index")
-inRange_RDR = varQual_RDR pREL_ARR_Name SLIT("inRange")
-succ_RDR = varQual_RDR pREL_ENUM_Name SLIT("succ")
-pred_RDR = varQual_RDR pREL_ENUM_Name SLIT("pred")
-minBound_RDR = varQual_RDR pREL_ENUM_Name SLIT("minBound")
-maxBound_RDR = varQual_RDR pREL_ENUM_Name SLIT("maxBound")
-assertErr_RDR = varQual_RDR pREL_ERR_Name SLIT("assertError")
+funTyCon_RDR = nameRdrName funTyConName
+nilCon_RDR = nameRdrName nilDataConName
+listTyCon_RDR = nameRdrName listTyConName
+ioTyCon_RDR = nameRdrName ioTyConName
+intTyCon_RDR = nameRdrName intTyConName
+eq_RDR = nameRdrName eqName
+ge_RDR = nameRdrName geName
+numClass_RDR = nameRdrName numClassName
+ordClass_RDR = nameRdrName ordClassName
+map_RDR = nameRdrName mapName
+append_RDR = nameRdrName appendName
+foldr_RDR = nameRdrName foldrName
+build_RDR = nameRdrName buildName
+enumFromTo_RDR = nameRdrName enumFromToName
+returnM_RDR = nameRdrName returnMName
+thenM_RDR = nameRdrName thenMName
+failM_RDR = nameRdrName failMName
+false_RDR = nameRdrName falseDataConName
+true_RDR = nameRdrName trueDataConName
+error_RDR = nameRdrName errorName
+getTag_RDR = nameRdrName getTagName
+fromEnum_RDR = nameRdrName fromEnumName
+toEnum_RDR = nameRdrName toEnumName
+enumFrom_RDR = nameRdrName enumFromName
+mkInt_RDR = nameRdrName intDataConName
+enumFromThen_RDR = nameRdrName enumFromThenName
+enumFromThenTo_RDR = nameRdrName enumFromThenToName
+ratioDataCon_RDR = nameRdrName ratioDataConName
+plusInteger_RDR = nameRdrName plusIntegerName
+timesInteger_RDR = nameRdrName timesIntegerName
+enumClass_RDR = nameRdrName enumClassName
+monadClass_RDR = nameRdrName monadClassName
+ioDataCon_RDR = nameRdrName ioDataConName
+cCallableClass_RDR = nameRdrName cCallableClassName
+cReturnableClass_RDR = nameRdrName cReturnableClassName
+eqClass_RDR = nameRdrName eqClassName
+eqString_RDR = nameRdrName eqStringName
+unpackCString_RDR = nameRdrName unpackCStringName
+unpackCStringFoldr_RDR = nameRdrName unpackCStringFoldrName
+unpackCStringUtf8_RDR = nameRdrName unpackCStringUtf8Name
+deRefStablePtr_RDR = nameRdrName deRefStablePtrName
+newStablePtr_RDR = nameRdrName newStablePtrName
+bindIO_RDR = nameRdrName bindIOName
+returnIO_RDR = nameRdrName returnIOName
+fromInteger_RDR = nameRdrName fromIntegerName
+fromRational_RDR = nameRdrName fromRationalName
+minus_RDR = nameRdrName minusName
\end{code}
%************************************************************************
%* *
%************************************************************************
-\begin{code}
-varQual mod str uq = mkKnownKeyGlobal (mkPreludeQual varName mod str) uq
-dataQual mod str uq = mkKnownKeyGlobal (mkPreludeQual dataName mod str) uq
-tcQual mod str uq = mkKnownKeyGlobal (mkPreludeQual tcName mod str) uq
-clsQual mod str uq = mkKnownKeyGlobal (mkPreludeQual clsName mod str) uq
+All these are original names; hence mkOrig
-varQual_RDR mod str = mkPreludeQual varName mod str
-dataQual_RDR mod str = mkPreludeQual dataName mod str
+\begin{code}
+varQual mod str uq = mkKnownKeyGlobal (varQual_RDR mod str) uq
+dataQual mod str uq = mkKnownKeyGlobal (dataQual_RDR mod str) uq
+tcQual mod str uq = mkKnownKeyGlobal (tcQual_RDR mod str) uq
+clsQual mod str uq = mkKnownKeyGlobal (clsQual_RDR mod str) uq
+
+kindQual str uq = mkLocalName uq (mkKindOccFS tcName str) builtinSrcLoc
+ -- Kinds are not z-encoded in interface file, hence mkKindOccFS
+ -- 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
+clsQual_RDR mod str = mkOrig clsName mod str
+dataQual_RDR mod str = mkOrig dataName mod str
\end{code}
%************************************************************************
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 74
+usOnceTyConKey = mkPreludeTyConUnique 75
+usManyTyConKey = mkPreludeTyConUnique 76
-- Generic Type Constructors
-crossTyConKey = mkPreludeTyConUnique 72
-plusTyConKey = mkPreludeTyConUnique 73
-genUnitTyConKey = mkPreludeTyConUnique 74
+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
bindIOIdKey = mkPreludeMiscIdUnique 36
returnIOIdKey = mkPreludeMiscIdUnique 37
deRefStablePtrIdKey = mkPreludeMiscIdUnique 38
-makeStablePtrIdKey = mkPreludeMiscIdUnique 39
+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
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
-- or for taggery.
-- ordClass: really it's the methods that are actually used.
-- numClass: for Int literals
-
--- these RDR names also have known keys, so we need to get back the RDR names to
--- populate the occurrence list above.
-intTyCon_RDR = nameRdrName intTyConName
-eq_RDR = nameRdrName eqName
-ge_RDR = nameRdrName geName
-numClass_RDR = nameRdrName numClassName
-ordClass_RDR = nameRdrName ordClassName
-map_RDR = nameRdrName mapName
-append_RDR = nameRdrName appendName
-foldr_RDR = nameRdrName foldrName
-build_RDR = nameRdrName buildName
-enumFromTo_RDR = nameRdrName enumFromToName
-returnM_RDR = nameRdrName returnMName
-thenM_RDR = nameRdrName thenMName
-failM_RDR = nameRdrName failMName
\end{code}
= 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}