\section[PrelNames]{Definitions of prelude modules and names}
-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
-
- -----------------------------------------------------------
- basicKnownKeyNames,
- 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,
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}
realFloatClassName, -- numeric
cCallableClassName, -- mentioned, ccallish
cReturnableClassName, -- mentioned, ccallish
+ dataClassName,
+ typeableClassName,
-- Numeric stuff
negateName, minusName,
-- Booleans
andName, orName
+
+ -- dotnet interop
+ , objectTyConName, marshalObjectName, unmarshalObjectName
+ , marshalStringName, unmarshalStringName, checkDotnetResName
]
monadNames :: [Name] -- The monad ops need by a HsDo
pREL_FLOAT_Name = mkModuleName "GHC.Float"
pREL_TOP_HANDLER_Name = mkModuleName "GHC.TopHandler"
sYSTEM_IO_Name = mkModuleName "System.IO"
+dYNAMIC_Name = mkModuleName "Data.Dynamic"
+tRAVERSE_Name = mkModuleName "Data.Traverse"
+gENERICS_Name = mkModuleName "Data.Generics"
+dOTNET_Name = mkModuleName "GHC.Dotnet"
rEAD_PREC_Name = mkModuleName "Text.ParserCombinators.ReadPrec"
lEX_Name = mkModuleName "Text.Read.Lex"
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
+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
iNTERACTIVE = mkHomeModule (mkModuleName "$Interactive")
%************************************************************************
\begin{code}
-getTag_RDR = nameRdrName getTagName
-
eq_RDR = nameRdrName eqName
ge_RDR = nameRdrName geName
ne_RDR = varQual_RDR pREL_BASE_Name FSLIT("/=")
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 dYNAMIC_Name FSLIT("typeOf")
+mkTypeRep_RDR = varQual_RDR dYNAMIC_Name FSLIT("mkAppTy")
+mkTyConRep_RDR = varQual_RDR dYNAMIC_Name FSLIT("mkTyCon")
+
+constr_RDR = dataQual_RDR gENERICS_Name FSLIT("Constr")
+gfoldl_RDR = varQual_RDR gENERICS_Name FSLIT("gfoldl")
+gfoldr_RDR = varQual_RDR gENERICS_Name FSLIT("gfoldr")
+gunfold_RDR = varQual_RDR gENERICS_Name FSLIT("gunfold")
+gmapT_RDR = varQual_RDR gENERICS_Name FSLIT("gmapT")
+gmapQ_RDR = varQual_RDR gENERICS_Name FSLIT("gmapQ")
+gmapM_RDR = varQual_RDR gENERICS_Name FSLIT("gmapM")
+conOf_RDR = varQual_RDR gENERICS_Name FSLIT("conOf")
+consOf_RDR = varQual_RDR gENERICS_Name FSLIT("consOf")
+
+undefined_RDR = varQual_RDR pREL_ERR_Name FSLIT("undefined")
\end{code}
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
-- Class Ix
ixClassName = clsQual pREL_ARR_Name FSLIT("Ix") ixClassKey
+-- Class Typeable and Data
+typeableClassName = clsQual dYNAMIC_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
-- Recursive-do notation
mfixName = varQual mONAD_FIX_Name FSLIT("mfix") mfixIdKey
+
+-- 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
+
\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
+-- dotnet interop
+objectTyConKey = mkPreludeTyConUnique 83
+
---------------- Template Haskell -------------------
-- USES TyConUniques 100-119
-----------------------------------------------------
\begin{code}
absentErrorIdKey = mkPreludeMiscIdUnique 1
-getTagIdKey = mkPreludeMiscIdUnique 2
augmentIdKey = mkPreludeMiscIdUnique 3
appendIdKey = mkPreludeMiscIdUnique 4
buildIdKey = mkPreludeMiscIdUnique 5
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