\section[PrelNames]{Definitions of prelude modules and names}
--- MetaHaskell Extension
-to do -- three things
-1) Allocate a key
-2) Make a "Name"
-3) Add the name to knownKeyNames
-
-
-The strings identify built-in prelude modules. They are
-defined here so as to avod
+Nota Bene: all Names defined in here should come from the base package
* ModuleNames for prelude modules,
e.g. pREL_BASE_Name :: ModuleName
-----------------------------------------------------------
module PrelNames, -- A huge bunch of (a) Names, e.g. intTyConName
-- (b) Uniques e.g. intTyConKey
+ -- (c) Groups of classes and types
+ -- (d) miscellaneous things
-- So many that we export them all
-
- -----------------------------------------------------------
- knownKeyNames, templateHaskellNames,
- mkTupNameStr, isBuiltInSyntaxName,
-
- ------------------------------------------------------------
- -- Goups of classes and types
- needsDataDeclCtxtClassKeys, cCallishClassKeys, noDictClassKeys,
- fractionalClassKeys, numericClassKeys, standardClassKeys,
- derivableClassKeys, -- things are needed as a result of a
- -- deriving(C) clause
- numericTyKeys, cCallishTyKeys,
-
- mkUnboundName, isUnboundName
) where
#include "HsVersions.h"
-import Module ( ModuleName, mkPrelModule, mkHomeModule, mkModuleName,mkVanillaModule )
-import OccName ( UserFS, dataName, tcName, clsName,
+import Module ( ModuleName, mkBasePkgModule, mkHomeModule, mkModuleName )
+import OccName ( UserFS, dataName, tcName, clsName, varName,
mkKindOccFS, mkOccFS
)
-
--- to avoid clashes with Meta.var we must make a local alias for OccName.varName
--- we do this by removing varName from the import of OccName above, making
--- a qualified instance of OccName and using OccNameAlias.varName where varName
--- ws previously used in this file.
-import qualified OccName as OccNameAlias
-
import RdrName ( RdrName, nameRdrName, mkOrig, rdrNameOcc )
import Unique ( Unique, Uniquable(..), hasKey,
)
import BasicTypes ( Boxity(..) )
import Name ( Name, mkInternalName, mkKnownKeyExternalName, mkWiredInName, nameUnique )
-import NameSet ( NameSet, mkNameSet )
import SrcLoc ( noSrcLoc )
import Util ( nOfThem )
import Panic ( panic )
This *local* name is used by the interactive stuff
\begin{code}
-itName uniq = mkInternalName uniq (mkOccFS OccNameAlias.varName FSLIT("it")) noSrcLoc
+itName uniq = mkInternalName uniq (mkOccFS varName FSLIT("it")) noSrcLoc
\end{code}
\begin{code}
names with uniques. These ones are the *non* wired-in ones. The
wired in ones are defined in TysWiredIn etc.
-
-MetaHaskell Extension
-It is here that the names defiend in module Meta must be added
\begin{code}
-knownKeyNames :: [Name]
-knownKeyNames
+basicKnownKeyNames :: [Name]
+basicKnownKeyNames
= [ -- Type constructors (synonyms especially)
ioTyConName, ioDataConName,
runIOName,
byteArrayTyConName,
mutableByteArrayTyConName,
bcoPrimTyConName,
- stablePtrTyConName,
- stablePtrDataConName,
-- Classes. *Must* include:
-- classes that are grabbed by key (e.g., eqClassKey)
realFloatClassName, -- numeric
cCallableClassName, -- mentioned, ccallish
cReturnableClassName, -- mentioned, ccallish
+ dataClassName,
+ typeableClassName,
-- Numeric stuff
negateName, minusName,
-- MonadRec stuff
mfixName,
+ -- Arrow stuff
+ arrAName, composeAName, firstAName,
+ appAName, choiceAName, loopAName,
+
-- Ix stuff
ixClassName,
filterPName, zipPName, crossPName, indexPName,
toPName, bpermutePName, bpermuteDftPName, indexOfPName,
- -- MetaHaskell Extension, "the smart constructors"
- -- text1 from Meta/work/gen.hs
- intLName,
- charLName,
- plitName,
- pvarName,
- ptupName,
- pconName,
- ptildeName,
- paspatName,
- pwildName,
- varName,
- conName,
- litName,
- appName,
- infixEName,
- lamName,
- tupName,
- doEName,
- compName,
- listExpName,
- condName,
- letEName,
- caseEName,
- infixAppName,
- sectionLName,
- sectionRName,
- guardedName,
- normalName,
- bindStName,
- letStName,
- noBindStName,
- parStName,
- fromName,
- fromThenName,
- fromToName,
- fromThenToName,
- liftName,
- gensymName,
- returnQName,
- bindQName,
- funName,
- valName,
- protoName, matchName, clauseName,
- exprTyConName, declTyConName, pattTyConName, mtchTyConName, clseTyConName,
- qTyConName, expTyConName, matTyConName, clsTyConName,
-
-- FFI primitive types that are not wired-in.
+ stablePtrTyConName, ptrTyConName, funPtrTyConName, addrTyConName,
int8TyConName, int16TyConName, int32TyConName, int64TyConName,
word8TyConName, word16TyConName, word32TyConName, word64TyConName,
-- Booleans
andName, orName
+
+ -- The Either type
+ , eitherTyConName, leftDataConName, rightDataConName
+
+ -- dotnet interop
+ , objectTyConName, marshalObjectName, unmarshalObjectName
+ , marshalStringName, unmarshalStringName, checkDotnetResName
]
monadNames :: [Name] -- The monad ops need by a HsDo
pREL_LIST_Name = mkModuleName "GHC.List"
pREL_PARR_Name = mkModuleName "GHC.PArr"
pREL_TUP_Name = mkModuleName "Data.Tuple"
+pREL_EITHER_Name = mkModuleName "Data.Either"
pREL_PACK_Name = mkModuleName "GHC.Pack"
pREL_CONC_Name = mkModuleName "GHC.Conc"
pREL_IO_BASE_Name = mkModuleName "GHC.IOBase"
pREL_FLOAT_Name = mkModuleName "GHC.Float"
pREL_TOP_HANDLER_Name = mkModuleName "GHC.TopHandler"
sYSTEM_IO_Name = mkModuleName "System.IO"
+dYNAMIC_Name = mkModuleName "Data.Dynamic"
+tYPEABLE_Name = mkModuleName "Data.Typeable"
+gENERICS_Name = mkModuleName "Data.Generics.Basics"
+dOTNET_Name = mkModuleName "GHC.Dotnet"
rEAD_PREC_Name = mkModuleName "Text.ParserCombinators.ReadPrec"
lEX_Name = mkModuleName "Text.Read.Lex"
mAIN_Name = mkModuleName "Main"
pREL_INT_Name = mkModuleName "GHC.Int"
pREL_WORD_Name = mkModuleName "GHC.Word"
-mONAD_FIX_Name = mkModuleName "Control.Monad.MonadRec"
+mONAD_FIX_Name = mkModuleName "Control.Monad.Fix"
+aRROW_Name = mkModuleName "Control.Arrow"
aDDR_Name = mkModuleName "Addr"
gLA_EXTS_Name = mkModuleName "GHC.Exts"
-gHC_PRIM = mkPrelModule gHC_PRIM_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_ERR = mkPrelModule pREL_ERR_Name
-pREL_NUM = mkPrelModule pREL_NUM_Name
-pREL_REAL = mkPrelModule pREL_REAL_Name
-pREL_FLOAT = mkPrelModule pREL_FLOAT_Name
-pRELUDE = mkPrelModule pRELUDE_Name
-
-
-iNTERACTIVE = mkHomeModule (mkModuleName "$Interactive")
+gHC_PRIM = mkBasePkgModule gHC_PRIM_Name
+pREL_BASE = mkBasePkgModule pREL_BASE_Name
+pREL_ADDR = mkBasePkgModule pREL_ADDR_Name
+pREL_PTR = mkBasePkgModule pREL_PTR_Name
+pREL_STABLE = mkBasePkgModule pREL_STABLE_Name
+pREL_IO_BASE = mkBasePkgModule pREL_IO_BASE_Name
+pREL_PACK = mkBasePkgModule pREL_PACK_Name
+pREL_ERR = mkBasePkgModule pREL_ERR_Name
+pREL_NUM = mkBasePkgModule pREL_NUM_Name
+pREL_REAL = mkBasePkgModule pREL_REAL_Name
+pREL_FLOAT = mkBasePkgModule pREL_FLOAT_Name
+pRELUDE = mkBasePkgModule pRELUDE_Name
-- MetaHaskell Extension text2 from Meta/work/gen.hs
mETA_META_Name = mkModuleName "Language.Haskell.THSyntax"
+rOOT_MAIN_Name = mkModuleName ":Main" -- Root module for initialisation
+rOOT_MAIN = mkHomeModule rOOT_MAIN_Name
+ -- The ':xxx' makes a moudle name that the user can never
+ -- use himself. The z-encoding for ':' is "ZC", so the z-encoded
+ -- module name still starts with a capital letter, which keeps
+ -- the z-encoded version consistent.
+iNTERACTIVE = mkHomeModule (mkModuleName ":Interactive")
\end{code}
%************************************************************************
mkTupNameStr Boxed 4 = (pREL_TUP_Name, mkFastString "(,,,)") -- ditto
mkTupNameStr Boxed n = (pREL_TUP_Name, mkFastString ("(" ++ nOfThem (n-1) ',' ++ ")"))
-mkTupNameStr Unboxed 0 = panic "Name.mkUbxTupNameStr: 0 ???"
+mkTupNameStr Unboxed 0 = (gHC_PRIM_Name, mkFastString "(# #)") -- 1 and 0 both make sense!!!
+--panic "Name.mkUbxTupNameStr: 0 ???"
mkTupNameStr Unboxed 1 = (gHC_PRIM_Name, mkFastString "(# #)") -- 1 and 0 both make sense!!!
mkTupNameStr Unboxed 2 = (gHC_PRIM_Name, mkFastString "(#,#)")
mkTupNameStr Unboxed 3 = (gHC_PRIM_Name, mkFastString "(#,,#)")
%************************************************************************
\begin{code}
-getTag_RDR = nameRdrName getTagName
-
eq_RDR = nameRdrName eqName
ge_RDR = nameRdrName geName
ne_RDR = varQual_RDR pREL_BASE_Name FSLIT("/=")
true_RDR = nameRdrName trueDataConName
and_RDR = nameRdrName andName
+left_RDR = nameRdrName leftDataConName
+right_RDR = nameRdrName rightDataConName
+
error_RDR = nameRdrName errorName
fromEnum_RDR = varQual_RDR pREL_ENUM_Name FSLIT("fromEnum")
unpackCStringUtf8_RDR = nameRdrName unpackCStringUtf8Name
newStablePtr_RDR = nameRdrName newStablePtrName
+addrDataCon_RDR = dataQual_RDR aDDR_Name FSLIT("A#")
bindIO_RDR = nameRdrName bindIOName
returnIO_RDR = nameRdrName returnIOName
compose_RDR = varQual_RDR pREL_BASE_Name FSLIT(".")
not_RDR = varQual_RDR pREL_BASE_Name FSLIT("not")
+getTag_RDR = varQual_RDR pREL_BASE_Name FSLIT("getTag")
succ_RDR = varQual_RDR pREL_ENUM_Name FSLIT("succ")
pred_RDR = varQual_RDR pREL_ENUM_Name FSLIT("pred")
minBound_RDR = varQual_RDR pREL_ENUM_Name FSLIT("minBound")
showString_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showString")
showSpace_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showSpace")
showParen_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showParen")
+
+typeOf_RDR = varQual_RDR tYPEABLE_Name FSLIT("typeOf")
+mkTypeRep_RDR = varQual_RDR tYPEABLE_Name FSLIT("mkAppTy")
+mkTyConRep_RDR = varQual_RDR tYPEABLE_Name FSLIT("mkTyCon")
+
+undefined_RDR = varQual_RDR pREL_ERR_Name FSLIT("undefined")
\end{code}
\begin{code}
-dollarMainName = varQual mAIN_Name FSLIT("$main") dollarMainKey
-runIOName = varQual pREL_TOP_HANDLER_Name FSLIT("runIO") runMainKey
+rootMainName = varQual rOOT_MAIN_Name FSLIT("main") rootMainKey
+runIOName = varQual pREL_TOP_HANDLER_Name FSLIT("runIO") runMainKey
-- Stuff from GHC.Prim
-usOnceTyConName = kindQual FSLIT(".") usOnceTyConKey
-usManyTyConName = kindQual FSLIT("!") usManyTyConKey
superKindName = kindQual FSLIT("KX") kindConKey
superBoxityName = kindQual FSLIT("BX") boxityConKey
liftedConName = kindQual FSLIT("*") liftedConKey
unliftedConName = kindQual FSLIT("#") unliftedConKey
openKindConName = kindQual FSLIT("?") anyBoxConKey
-usageKindConName = kindQual FSLIT("$") usageConKey
typeConName = kindQual FSLIT("Type") typeConKey
funTyConName = tcQual gHC_PRIM_Name FSLIT("(->)") funTyConKey
cCallableClassName = clsQual gHC_PRIM_Name FSLIT("CCallable") cCallableClassKey
cReturnableClassName = clsQual gHC_PRIM_Name FSLIT("CReturnable") cReturnableClassKey
-getTagName = wVarQual gHC_PRIM_Name FSLIT("getTag#") getTagIdKey
unsafeCoerceName = wVarQual gHC_PRIM_Name FSLIT("unsafeCoerce#") unsafeCoerceIdKey
nullAddrName = wVarQual gHC_PRIM_Name FSLIT("nullAddr#") nullAddrIdKey
seqName = wVarQual gHC_PRIM_Name FSLIT("seq") seqIdKey
eqName = varQual pREL_BASE_Name FSLIT("==") eqClassOpKey
geName = varQual pREL_BASE_Name FSLIT(">=") geClassOpKey
+eitherTyConName = tcQual pREL_EITHER_Name FSLIT("Either") eitherTyConKey
+leftDataConName = dataQual pREL_EITHER_Name FSLIT("Left") leftDataConKey
+rightDataConName = dataQual pREL_EITHER_Name FSLIT("Right") rightDataConKey
+
-- Generics
crossTyConName = tcQual pREL_BASE_Name FSLIT(":*:") crossTyConKey
crossDataConName = dataQual pREL_BASE_Name FSLIT(":*:") crossDataConKey
-- Class Ix
ixClassName = clsQual pREL_ARR_Name FSLIT("Ix") ixClassKey
+-- Class Typeable and Data
+typeableClassName = clsQual tYPEABLE_Name FSLIT("Typeable") typeableClassKey
+dataClassName = clsQual gENERICS_Name FSLIT("Data") dataClassKey
+
-- Enum module (Enum, Bounded)
enumClassName = clsQual pREL_ENUM_Name FSLIT("Enum") enumClassKey
enumFromName = varQual pREL_ENUM_Name FSLIT("enumFrom") enumFromClassOpKey
filterName = varQual pREL_LIST_Name FSLIT("filter") filterIdKey
zipName = varQual pREL_LIST_Name FSLIT("zip") zipIdKey
--- MetaHaskell Extension, "the smart constructors"
--- text3 from Meta/work/gen.hs
-intLName = varQual mETA_META_Name FSLIT("intL") intLIdKey
-charLName = varQual mETA_META_Name FSLIT("charL") charLIdKey
-plitName = varQual mETA_META_Name FSLIT("plit") plitIdKey
-pvarName = varQual mETA_META_Name FSLIT("pvar") pvarIdKey
-ptupName = varQual mETA_META_Name FSLIT("ptup") ptupIdKey
-pconName = varQual mETA_META_Name FSLIT("pcon") pconIdKey
-ptildeName = varQual mETA_META_Name FSLIT("ptilde") ptildeIdKey
-paspatName = varQual mETA_META_Name FSLIT("paspat") paspatIdKey
-pwildName = varQual mETA_META_Name FSLIT("pwild") pwildIdKey
-varName = varQual mETA_META_Name FSLIT("var") varIdKey
-conName = varQual mETA_META_Name FSLIT("con") conIdKey
-litName = varQual mETA_META_Name FSLIT("lit") litIdKey
-appName = varQual mETA_META_Name FSLIT("app") appIdKey
-infixEName = varQual mETA_META_Name FSLIT("infixE") infixEIdKey
-lamName = varQual mETA_META_Name FSLIT("lam") lamIdKey
-tupName = varQual mETA_META_Name FSLIT("tup") tupIdKey
-doEName = varQual mETA_META_Name FSLIT("doE") doEIdKey
-compName = varQual mETA_META_Name FSLIT("comp") compIdKey
-listExpName = varQual mETA_META_Name FSLIT("listExp") listExpIdKey
-condName = varQual mETA_META_Name FSLIT("cond") condIdKey
-letEName = varQual mETA_META_Name FSLIT("letE") letEIdKey
-caseEName = varQual mETA_META_Name FSLIT("caseE") caseEIdKey
-infixAppName = varQual mETA_META_Name FSLIT("infixApp") infixAppIdKey
-sectionLName = varQual mETA_META_Name FSLIT("sectionL") sectionLIdKey
-sectionRName = varQual mETA_META_Name FSLIT("sectionR") sectionRIdKey
-guardedName = varQual mETA_META_Name FSLIT("guarded") guardedIdKey
-normalName = varQual mETA_META_Name FSLIT("normal") normalIdKey
-bindStName = varQual mETA_META_Name FSLIT("bindSt") bindStIdKey
-letStName = varQual mETA_META_Name FSLIT("letSt") letStIdKey
-noBindStName = varQual mETA_META_Name FSLIT("noBindSt") noBindStIdKey
-parStName = varQual mETA_META_Name FSLIT("parSt") parStIdKey
-fromName = varQual mETA_META_Name FSLIT("from") fromIdKey
-fromThenName = varQual mETA_META_Name FSLIT("fromThen") fromThenIdKey
-fromToName = varQual mETA_META_Name FSLIT("fromTo") fromToIdKey
-fromThenToName = varQual mETA_META_Name FSLIT("fromThenTo") fromThenToIdKey
-liftName = varQual mETA_META_Name FSLIT("lift") liftIdKey
-gensymName = varQual mETA_META_Name FSLIT("gensym") gensymIdKey
-returnQName = varQual mETA_META_Name FSLIT("returnQ") returnQIdKey
-bindQName = varQual mETA_META_Name FSLIT("bindQ") bindQIdKey
-funName = varQual mETA_META_Name FSLIT("fun") funIdKey
-valName = varQual mETA_META_Name FSLIT("val") valIdKey
-matchName = varQual mETA_META_Name FSLIT("match") matchIdKey
-clauseName = varQual mETA_META_Name FSLIT("clause") clauseIdKey
-protoName = varQual mETA_META_Name FSLIT("proto") protoIdKey
-exprTyConName = tcQual mETA_META_Name FSLIT("Expr") exprTyConKey
-declTyConName = tcQual mETA_META_Name FSLIT("Decl") declTyConKey
-pattTyConName = tcQual mETA_META_Name FSLIT("Patt") pattTyConKey
-mtchTyConName = tcQual mETA_META_Name FSLIT("Mtch") mtchTyConKey
-clseTyConName = tcQual mETA_META_Name FSLIT("Clse") clseTyConKey
-stmtTyConName = tcQual mETA_META_Name FSLIT("Stmt") stmtTyConKey
-
-qTyConName = tcQual mETA_META_Name FSLIT("Q") qTyConKey
-expTyConName = tcQual mETA_META_Name FSLIT("Exp") expTyConKey
-matTyConName = tcQual mETA_META_Name FSLIT("Mat") matTyConKey
-clsTyConName = tcQual mETA_META_Name FSLIT("Cls") clsTyConKey
-
-- Class Show
showClassName = clsQual pREL_SHOW_Name FSLIT("Show") showClassKey
wordDataConName = wDataQual pREL_WORD_Name FSLIT("W#") wordDataConKey
-- Addr module
-addrTyConName = wTcQual aDDR_Name FSLIT("Addr") addrTyConKey
-addrDataConName = wDataQual aDDR_Name FSLIT("A#") addrDataConKey
+addrTyConName = tcQual aDDR_Name FSLIT("Addr") addrTyConKey
-- PrelPtr module
-ptrTyConName = wTcQual pREL_PTR_Name FSLIT("Ptr") ptrTyConKey
-ptrDataConName = wDataQual pREL_PTR_Name FSLIT("Ptr") ptrDataConKey
-funPtrTyConName = wTcQual pREL_PTR_Name FSLIT("FunPtr") funPtrTyConKey
-funPtrDataConName = wDataQual pREL_PTR_Name FSLIT("FunPtr") funPtrDataConKey
+ptrTyConName = tcQual pREL_PTR_Name FSLIT("Ptr") ptrTyConKey
+funPtrTyConName = tcQual pREL_PTR_Name FSLIT("FunPtr") funPtrTyConKey
-- Byte array types
byteArrayTyConName = tcQual pREL_BYTEARR_Name FSLIT("ByteArray") byteArrayTyConKey
-- Foreign objects and weak pointers
stablePtrTyConName = tcQual pREL_STABLE_Name FSLIT("StablePtr") stablePtrTyConKey
-stablePtrDataConName = dataQual pREL_STABLE_Name FSLIT("StablePtr") stablePtrDataConKey
newStablePtrName = varQual pREL_STABLE_Name FSLIT("newStablePtr") newStablePtrIdKey
-- Error module
-- Recursive-do notation
mfixName = varQual mONAD_FIX_Name FSLIT("mfix") mfixIdKey
-\end{code}
-%************************************************************************
-%* *
-\subsection{Standard groups of names}
-%* *
-%************************************************************************
+-- Arrow notation
+arrAName = varQual aRROW_Name FSLIT("arr") arrAIdKey
+composeAName = varQual aRROW_Name FSLIT(">>>") composeAIdKey
+firstAName = varQual aRROW_Name FSLIT("first") firstAIdKey
+appAName = varQual aRROW_Name FSLIT("app") appAIdKey
+choiceAName = varQual aRROW_Name FSLIT("|||") choiceAIdKey
+loopAName = varQual aRROW_Name FSLIT("loop") loopAIdKey
+
+-- dotnet interop
+objectTyConName = wTcQual dOTNET_Name FSLIT("Object") objectTyConKey
+unmarshalObjectName = varQual dOTNET_Name FSLIT("unmarshalObject") unmarshalObjectIdKey
+marshalObjectName = varQual dOTNET_Name FSLIT("marshalObject") marshalObjectIdKey
+marshalStringName = varQual dOTNET_Name FSLIT("marshalString") marshalStringIdKey
+unmarshalStringName = varQual dOTNET_Name FSLIT("unmarshalString") unmarshalStringIdKey
+checkDotnetResName = varQual dOTNET_Name FSLIT("checkResult") checkDotnetResNameIdKey
-\begin{code}
-templateHaskellNames :: NameSet
--- The names that are implicitly mentioned by ``bracket''
--- Should stay in sync with the import list of DsMeta
-templateHaskellNames
- = mkNameSet [ intLName,charLName, plitName, pvarName, ptupName,
- pconName, ptildeName, paspatName, pwildName,
- varName, conName, litName, appName, lamName,
- tupName, doEName, compName,
- listExpName, condName, letEName, caseEName,
- infixAppName, guardedName, normalName,
- bindStName, letStName, noBindStName, parStName,
- fromName, fromThenName, fromToName, fromThenToName,
- funName, valName, liftName,gensymName, bindQName,
- appendName, matchName, clauseName ]
\end{code}
%************************************************************************
All these are original names; hence mkOrig
\begin{code}
-varQual = mk_known_key_name OccNameAlias.varName -- Note use of local alias vName
-dataQual = mk_known_key_name dataName
+varQual = mk_known_key_name varName
+dataQual = mk_known_key_name dataName -- All the constructor names here are for the DataCon
+ -- itself, which lives in the VarName name space
tcQual = mk_known_key_name tcName
clsQual = mk_known_key_name clsName
-wVarQual = mk_wired_in_name OccNameAlias.varName -- The wired-in analogues
+wVarQual = mk_wired_in_name varName -- The wired-in analogues
wDataQual = mk_wired_in_name dataName
wTcQual = mk_wired_in_name tcName
-varQual_RDR mod str = mkOrig mod (mkOccFS OccNameAlias.varName str) -- note use of local alias vName
+varQual_RDR mod str = mkOrig mod (mkOccFS varName str) -- The RDR analogues
+dataQual_RDR mod str = mkOrig mod (mkOccFS dataName str)
tcQual_RDR mod str = mkOrig mod (mkOccFS tcName str)
clsQual_RDR mod str = mkOrig mod (mkOccFS clsName str)
-dataQual_RDR mod str = mkOrig mod (mkOccFS dataName str)
mk_known_key_name space mod str uniq
- = mkKnownKeyExternalName mod (mkOccFS space str) uniq
+ = mkKnownKeyExternalName (mkBasePkgModule mod) (mkOccFS space str) uniq
mk_wired_in_name space mod str uniq
- = mkWiredInName (mkVanillaModule mod) (mkOccFS space str) uniq
+ = mkWiredInName (mkBasePkgModule mod) (mkOccFS space str) uniq
kindQual str uq = mkInternalName uq (mkKindOccFS tcName str) noSrcLoc
-- Kinds are not z-encoded in interface file, hence mkKindOccFS
boundedClassKey = mkPreludeClassUnique 1
enumClassKey = mkPreludeClassUnique 2
eqClassKey = mkPreludeClassUnique 3
+typeableClassKey = mkPreludeClassUnique 4
floatingClassKey = mkPreludeClassUnique 5
fractionalClassKey = mkPreludeClassUnique 6
integralClassKey = mkPreludeClassUnique 7
monadClassKey = mkPreludeClassUnique 8
+dataClassKey = mkPreludeClassUnique 9
functorClassKey = mkPreludeClassUnique 10
numClassKey = mkPreludeClassUnique 11
ordClassKey = mkPreludeClassUnique 12
realFloatClassKey = mkPreludeClassUnique 15
realFracClassKey = mkPreludeClassUnique 16
showClassKey = mkPreludeClassUnique 17
-
cCallableClassKey = mkPreludeClassUnique 18
cReturnableClassKey = mkPreludeClassUnique 19
-
ixClassKey = mkPreludeClassUnique 20
\end{code}
ptrTyConKey = mkPreludeTyConUnique 74
funPtrTyConKey = mkPreludeTyConUnique 75
--- Usage type constructors
-usageConKey = mkPreludeTyConUnique 76
-usOnceTyConKey = mkPreludeTyConUnique 77
-usManyTyConKey = mkPreludeTyConUnique 78
-
-- Generic Type Constructors
crossTyConKey = mkPreludeTyConUnique 79
plusTyConKey = mkPreludeTyConUnique 80
-- Parallel array type constructor
parrTyConKey = mkPreludeTyConUnique 82
--- Template Haskell
-qTyConKey = mkPreludeTyConUnique 83
-exprTyConKey = mkPreludeTyConUnique 84
-declTyConKey = mkPreludeTyConUnique 85
-pattTyConKey = mkPreludeTyConUnique 86
-mtchTyConKey = mkPreludeTyConUnique 87
-clseTyConKey = mkPreludeTyConUnique 88
-stmtTyConKey = mkPreludeTyConUnique 89
-expTyConKey = mkPreludeTyConUnique 90
-matTyConKey = mkPreludeTyConUnique 91
-clsTyConKey = mkPreludeTyConUnique 92
+-- dotnet interop
+objectTyConKey = mkPreludeTyConUnique 83
+
+eitherTyConKey = mkPreludeTyConUnique 84
+
+---------------- Template Haskell -------------------
+-- USES TyConUniques 100-119
+-----------------------------------------------------
unitTyConKey = mkTupleTyConUnique Boxed 0
\end{code}
%************************************************************************
\begin{code}
-addrDataConKey = mkPreludeDataConUnique 0
charDataConKey = mkPreludeDataConUnique 1
consDataConKey = mkPreludeDataConUnique 2
doubleDataConKey = mkPreludeDataConUnique 3
largeIntegerDataConKey = mkPreludeDataConUnique 8
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 20
-- Data constructor for parallel arrays
parrDataConKey = mkPreludeDataConUnique 24
+
+leftDataConKey = mkPreludeDataConUnique 25
+rightDataConKey = mkPreludeDataConUnique 26
\end{code}
%************************************************************************
\begin{code}
absentErrorIdKey = mkPreludeMiscIdUnique 1
-getTagIdKey = mkPreludeMiscIdUnique 2
augmentIdKey = mkPreludeMiscIdUnique 3
appendIdKey = mkPreludeMiscIdUnique 4
buildIdKey = mkPreludeMiscIdUnique 5
assertIdKey = mkPreludeMiscIdUnique 53
runSTRepIdKey = mkPreludeMiscIdUnique 54
-dollarMainKey = mkPreludeMiscIdUnique 55
+rootMainKey = mkPreludeMiscIdUnique 55
runMainKey = mkPreludeMiscIdUnique 56
andIdKey = mkPreludeMiscIdUnique 57
bpermutePIdKey = mkPreludeMiscIdUnique 91
bpermuteDftPIdKey = mkPreludeMiscIdUnique 92
indexOfPIdKey = mkPreludeMiscIdUnique 93
+
+-- dotnet interop
+unmarshalObjectIdKey = mkPreludeMiscIdUnique 94
+marshalObjectIdKey = mkPreludeMiscIdUnique 95
+marshalStringIdKey = mkPreludeMiscIdUnique 96
+unmarshalStringIdKey = mkPreludeMiscIdUnique 97
+checkDotnetResNameIdKey = mkPreludeMiscIdUnique 98
+
\end{code}
Certain class operations from Prelude classes. They get their own
thenMClassOpKey = mkPreludeMiscIdUnique 114 -- (>>)
returnMClassOpKey = mkPreludeMiscIdUnique 117
--- MetaHaskell Extension, (text4 118) from Meta/work/gen.hs
-intLIdKey = mkPreludeMiscIdUnique 118
-charLIdKey = mkPreludeMiscIdUnique 119
-plitIdKey = mkPreludeMiscIdUnique 120
-pvarIdKey = mkPreludeMiscIdUnique 121
-ptupIdKey = mkPreludeMiscIdUnique 122
-pconIdKey = mkPreludeMiscIdUnique 123
-ptildeIdKey = mkPreludeMiscIdUnique 124
-paspatIdKey = mkPreludeMiscIdUnique 125
-pwildIdKey = mkPreludeMiscIdUnique 126
-varIdKey = mkPreludeMiscIdUnique 127
-conIdKey = mkPreludeMiscIdUnique 128
-litIdKey = mkPreludeMiscIdUnique 129
-appIdKey = mkPreludeMiscIdUnique 130
-infixEIdKey = mkPreludeMiscIdUnique 131
-lamIdKey = mkPreludeMiscIdUnique 132
-tupIdKey = mkPreludeMiscIdUnique 133
-doEIdKey = mkPreludeMiscIdUnique 134
-compIdKey = mkPreludeMiscIdUnique 135
-listExpIdKey = mkPreludeMiscIdUnique 137
-condIdKey = mkPreludeMiscIdUnique 138
-letEIdKey = mkPreludeMiscIdUnique 139
-caseEIdKey = mkPreludeMiscIdUnique 140
-infixAppIdKey = mkPreludeMiscIdUnique 141
-sectionLIdKey = mkPreludeMiscIdUnique 142
-sectionRIdKey = mkPreludeMiscIdUnique 143
-guardedIdKey = mkPreludeMiscIdUnique 144
-normalIdKey = mkPreludeMiscIdUnique 145
-bindStIdKey = mkPreludeMiscIdUnique 146
-letStIdKey = mkPreludeMiscIdUnique 147
-noBindStIdKey = mkPreludeMiscIdUnique 148
-parStIdKey = mkPreludeMiscIdUnique 149
-fromIdKey = mkPreludeMiscIdUnique 150
-fromThenIdKey = mkPreludeMiscIdUnique 151
-fromToIdKey = mkPreludeMiscIdUnique 152
-fromThenToIdKey = mkPreludeMiscIdUnique 153
-liftIdKey = mkPreludeMiscIdUnique 154
-gensymIdKey = mkPreludeMiscIdUnique 155
-returnQIdKey = mkPreludeMiscIdUnique 156
-bindQIdKey = mkPreludeMiscIdUnique 157
-funIdKey = mkPreludeMiscIdUnique 158
-valIdKey = mkPreludeMiscIdUnique 159
-protoIdKey = mkPreludeMiscIdUnique 160
-matchIdKey = mkPreludeMiscIdUnique 161
-clauseIdKey = mkPreludeMiscIdUnique 162
-
-- Recursive do notation
-mfixIdKey = mkPreludeMiscIdUnique 163
+mfixIdKey = mkPreludeMiscIdUnique 118
+
+-- Arrow notation
+arrAIdKey = mkPreludeMiscIdUnique 119
+composeAIdKey = mkPreludeMiscIdUnique 120 -- >>>
+firstAIdKey = mkPreludeMiscIdUnique 121
+appAIdKey = mkPreludeMiscIdUnique 122
+choiceAIdKey = mkPreludeMiscIdUnique 123 -- |||
+loopAIdKey = mkPreludeMiscIdUnique 124
+
+---------------- Template Haskell -------------------
+-- USES IdUniques 200-299
+-----------------------------------------------------
\end{code}