mkTupleTyConUnique
)
import BasicTypes ( Boxity(..), Arity )
-import Name ( Name, mkInternalName, mkExternalName, nameModule )
+import Name ( Name, mkInternalName, mkExternalName )
import SrcLoc ( noSrcLoc )
import FastString
\end{code}
runMainIOName,
orderingTyConName,
rationalTyConName,
+ stringTyConName,
ratioDataConName,
ratioTyConName,
integerTyConName, smallIntegerDataConName, largeIntegerDataConName,
realFracClassName, -- numeric
realFloatClassName, -- numeric
dataClassName,
+ isStringClassName,
-- Numeric stuff
negateName, minusName,
fromRationalName, fromIntegerName,
geName, eqName,
+
+ -- String stuff
+ fromStringName,
-- Enum stuff
enumFromName, enumFromThenName,
-- Parallel array operations
nullPName, lengthPName, replicatePName, mapPName,
- filterPName, zipPName, crossPName, indexPName,
+ filterPName, zipPName, crossMapPName, indexPName,
toPName, bpermutePName, bpermuteDftPName, indexOfPName,
-- FFI primitive types that are not wired-in.
otherwiseIdName,
plusIntegerName, timesIntegerName,
eqStringName, assertName, breakpointName, breakpointCondName,
+ breakpointAutoName, opaqueTyConName, unknownTyConName,
+ unknown1TyConName, unknown2TyConName, unknown3TyConName,
assertErrorName, runSTRepName,
printName, fstName, sndName,
gHC_PARR = mkBaseModule FSLIT("GHC.PArr")
dATA_TUP = mkBaseModule FSLIT("Data.Tuple")
dATA_EITHER = mkBaseModule FSLIT("Data.Either")
+dATA_STRING = mkBaseModule FSLIT("Data.String")
gHC_PACK = mkBaseModule FSLIT("GHC.Pack")
gHC_CONC = mkBaseModule FSLIT("GHC.Conc")
gHC_IO_BASE = mkBaseModule FSLIT("GHC.IOBase")
times_RDR = varQual_RDR gHC_NUM FSLIT("*")
plus_RDR = varQual_RDR gHC_NUM FSLIT("+")
+fromString_RDR = nameRdrName fromStringName
+
compose_RDR = varQual_RDR gHC_BASE FSLIT(".")
not_RDR = varQual_RDR gHC_BASE FSLIT("not")
orderingTyConName = tcQual gHC_BASE FSLIT("Ordering") orderingTyConKey
-eitherTyConName = tcQual dATA_EITHER FSLIT("Either") eitherTyConKey
-leftDataConName = conName eitherTyConName FSLIT("Left") leftDataConKey
-rightDataConName = conName eitherTyConName FSLIT("Right") rightDataConKey
+eitherTyConName = tcQual dATA_EITHER FSLIT("Either") eitherTyConKey
+leftDataConName = conName dATA_EITHER FSLIT("Left") leftDataConKey
+rightDataConName = conName dATA_EITHER FSLIT("Right") rightDataConKey
-- Generics
crossTyConName = tcQual gHC_BASE FSLIT(":*:") crossTyConKey
unpackCStringFoldrName = varQual gHC_BASE FSLIT("unpackFoldrCString#") unpackCStringFoldrIdKey
unpackCStringUtf8Name = varQual gHC_BASE FSLIT("unpackCStringUtf8#") unpackCStringUtf8IdKey
eqStringName = varQual gHC_BASE FSLIT("eqString") eqStringIdKey
+stringTyConName = tcQual gHC_BASE FSLIT("String") stringTyConKey
-- The 'inline' function
inlineIdName = varQual gHC_BASE FSLIT("inline") inlineIdKey
-- Base classes (Eq, Ord, Functor)
-eqClassName = clsQual gHC_BASE FSLIT("Eq") eqClassKey
-eqName = methName eqClassName FSLIT("==") eqClassOpKey
-ordClassName = clsQual gHC_BASE FSLIT("Ord") ordClassKey
-geName = methName ordClassName FSLIT(">=") geClassOpKey
-functorClassName = clsQual gHC_BASE FSLIT("Functor") functorClassKey
+eqClassName = clsQual gHC_BASE FSLIT("Eq") eqClassKey
+eqName = methName gHC_BASE FSLIT("==") eqClassOpKey
+ordClassName = clsQual gHC_BASE FSLIT("Ord") ordClassKey
+geName = methName gHC_BASE FSLIT(">=") geClassOpKey
+functorClassName = clsQual gHC_BASE FSLIT("Functor") functorClassKey
-- Class Monad
-monadClassName = clsQual gHC_BASE FSLIT("Monad") monadClassKey
-thenMName = methName monadClassName FSLIT(">>") thenMClassOpKey
-bindMName = methName monadClassName FSLIT(">>=") bindMClassOpKey
-returnMName = methName monadClassName FSLIT("return") returnMClassOpKey
-failMName = methName monadClassName FSLIT("fail") failMClassOpKey
+monadClassName = clsQual gHC_BASE FSLIT("Monad") monadClassKey
+thenMName = methName gHC_BASE FSLIT(">>") thenMClassOpKey
+bindMName = methName gHC_BASE FSLIT(">>=") bindMClassOpKey
+returnMName = methName gHC_BASE FSLIT("return") returnMClassOpKey
+failMName = methName gHC_BASE FSLIT("fail") failMClassOpKey
-- Random PrelBase functions
+fromStringName = methName dATA_STRING FSLIT("fromString") fromStringClassOpKey
otherwiseIdName = varQual gHC_BASE FSLIT("otherwise") otherwiseIdKey
foldrName = varQual gHC_BASE FSLIT("foldr") foldrIdKey
buildName = varQual gHC_BASE FSLIT("build") buildIdKey
augmentName = varQual gHC_BASE FSLIT("augment") augmentIdKey
appendName = varQual gHC_BASE FSLIT("++") appendIdKey
-andName = varQual gHC_BASE FSLIT("&&") andIdKey
-orName = varQual gHC_BASE FSLIT("||") orIdKey
+andName = varQual gHC_BASE FSLIT("&&") andIdKey
+orName = varQual gHC_BASE FSLIT("||") orIdKey
assertName = varQual gHC_BASE FSLIT("assert") assertIdKey
breakpointName = varQual gHC_BASE FSLIT("breakpoint") breakpointIdKey
breakpointCondName= varQual gHC_BASE FSLIT("breakpointCond") breakpointCondIdKey
+breakpointAutoName= varQual gHC_BASE FSLIT("breakpointAuto") breakpointAutoIdKey
+unknownTyConName = tcQual gHC_BASE FSLIT("Unknown") unknownTyConKey
+unknown1TyConName = tcQual gHC_BASE FSLIT("Unknown1") unknown1TyConKey
+unknown2TyConName = tcQual gHC_BASE FSLIT("Unknown2") unknown2TyConKey
+unknown3TyConName = tcQual gHC_BASE FSLIT("Unknown3") unknown3TyConKey
+opaqueTyConName = tcQual gHC_BASE FSLIT("Opaque") opaqueTyConKey
+
breakpointJumpName
= mkInternalName
breakpointJumpIdKey
breakpointCondJumpIdKey
(mkOccNameFS varName FSLIT("breakpointCondJump"))
noSrcLoc
+breakpointAutoJumpName
+ = mkInternalName
+ breakpointAutoJumpIdKey
+ (mkOccNameFS varName FSLIT("breakpointAutoJump"))
+ noSrcLoc
-- PrelTup
fstName = varQual dATA_TUP FSLIT("fst") fstIdKey
sndName = varQual dATA_TUP FSLIT("snd") sndIdKey
-- Module PrelNum
-numClassName = clsQual gHC_NUM FSLIT("Num") numClassKey
-fromIntegerName = methName numClassName FSLIT("fromInteger") fromIntegerClassOpKey
-minusName = methName numClassName FSLIT("-") minusClassOpKey
-negateName = methName numClassName FSLIT("negate") negateClassOpKey
-plusIntegerName = varQual gHC_NUM FSLIT("plusInteger") plusIntegerIdKey
-timesIntegerName = varQual gHC_NUM FSLIT("timesInteger") timesIntegerIdKey
-integerTyConName = tcQual gHC_NUM FSLIT("Integer") integerTyConKey
-smallIntegerDataConName = conName integerTyConName FSLIT("S#") smallIntegerDataConKey
-largeIntegerDataConName = conName integerTyConName FSLIT("J#") largeIntegerDataConKey
+numClassName = clsQual gHC_NUM FSLIT("Num") numClassKey
+fromIntegerName = methName gHC_NUM FSLIT("fromInteger") fromIntegerClassOpKey
+minusName = methName gHC_NUM FSLIT("-") minusClassOpKey
+negateName = methName gHC_NUM FSLIT("negate") negateClassOpKey
+plusIntegerName = varQual gHC_NUM FSLIT("plusInteger") plusIntegerIdKey
+timesIntegerName = varQual gHC_NUM FSLIT("timesInteger") timesIntegerIdKey
+integerTyConName = tcQual gHC_NUM FSLIT("Integer") integerTyConKey
+smallIntegerDataConName = conName gHC_NUM FSLIT("S#") smallIntegerDataConKey
+largeIntegerDataConName = conName gHC_NUM FSLIT("J#") largeIntegerDataConKey
-- PrelReal types and classes
-rationalTyConName = tcQual gHC_REAL FSLIT("Rational") rationalTyConKey
-ratioTyConName = tcQual gHC_REAL FSLIT("Ratio") ratioTyConKey
-ratioDataConName = conName ratioTyConName FSLIT(":%") ratioDataConKey
-realClassName = clsQual gHC_REAL FSLIT("Real") realClassKey
-integralClassName = clsQual gHC_REAL FSLIT("Integral") integralClassKey
-realFracClassName = clsQual gHC_REAL FSLIT("RealFrac") realFracClassKey
-fractionalClassName = clsQual gHC_REAL FSLIT("Fractional") fractionalClassKey
-fromRationalName = methName fractionalClassName FSLIT("fromRational") fromRationalClassOpKey
+rationalTyConName = tcQual gHC_REAL FSLIT("Rational") rationalTyConKey
+ratioTyConName = tcQual gHC_REAL FSLIT("Ratio") ratioTyConKey
+ratioDataConName = conName gHC_REAL FSLIT(":%") ratioDataConKey
+realClassName = clsQual gHC_REAL FSLIT("Real") realClassKey
+integralClassName = clsQual gHC_REAL FSLIT("Integral") integralClassKey
+realFracClassName = clsQual gHC_REAL FSLIT("RealFrac") realFracClassKey
+fractionalClassName = clsQual gHC_REAL FSLIT("Fractional") fractionalClassKey
+fromRationalName = methName gHC_REAL FSLIT("fromRational") fromRationalClassOpKey
-- PrelFloat classes
floatingClassName = clsQual gHC_FLOAT FSLIT("Floating") floatingClassKey
-- Enum module (Enum, Bounded)
enumClassName = clsQual gHC_ENUM FSLIT("Enum") enumClassKey
-enumFromName = methName enumClassName FSLIT("enumFrom") enumFromClassOpKey
-enumFromToName = methName enumClassName FSLIT("enumFromTo") enumFromToClassOpKey
-enumFromThenName = methName enumClassName FSLIT("enumFromThen") enumFromThenClassOpKey
-enumFromThenToName = methName enumClassName FSLIT("enumFromThenTo") enumFromThenToClassOpKey
+enumFromName = methName gHC_ENUM FSLIT("enumFrom") enumFromClassOpKey
+enumFromToName = methName gHC_ENUM FSLIT("enumFromTo") enumFromToClassOpKey
+enumFromThenName = methName gHC_ENUM FSLIT("enumFromThen") enumFromThenClassOpKey
+enumFromThenToName = methName gHC_ENUM FSLIT("enumFromThenTo") enumFromThenToClassOpKey
boundedClassName = clsQual gHC_ENUM FSLIT("Bounded") boundedClassKey
-- List functions
mapPName = varQual gHC_PARR FSLIT("mapP") mapPIdKey
filterPName = varQual gHC_PARR FSLIT("filterP") filterPIdKey
zipPName = varQual gHC_PARR FSLIT("zipP") zipPIdKey
-crossPName = varQual gHC_PARR FSLIT("crossP") crossPIdKey
+crossMapPName = varQual gHC_PARR FSLIT("crossMapP") crossMapPIdKey
indexPName = varQual gHC_PARR FSLIT("!:") indexPIdKey
toPName = varQual gHC_PARR FSLIT("toP") toPIdKey
bpermutePName = varQual gHC_PARR FSLIT("bpermuteP") bpermutePIdKey
-- IOBase things
ioTyConName = tcQual gHC_IO_BASE FSLIT("IO") ioTyConKey
-ioDataConName = conName ioTyConName FSLIT("IO") ioDataConKey
+ioDataConName = conName gHC_IO_BASE FSLIT("IO") ioDataConKey
thenIOName = varQual gHC_IO_BASE FSLIT("thenIO") thenIOIdKey
bindIOName = varQual gHC_IO_BASE FSLIT("bindIO") bindIOIdKey
returnIOName = varQual gHC_IO_BASE FSLIT("returnIO") returnIOIdKey
word32TyConName = tcQual gHC_WORD FSLIT("Word32") word32TyConKey
word64TyConName = tcQual gHC_WORD FSLIT("Word64") word64TyConKey
wordTyConName = tcQual gHC_WORD FSLIT("Word") wordTyConKey
-wordDataConName = conName wordTyConName FSLIT("W#") wordDataConKey
+wordDataConName = conName gHC_WORD FSLIT("W#") wordDataConKey
-- PrelPtr module
ptrTyConName = tcQual gHC_PTR FSLIT("Ptr") ptrTyConKey
-- Recursive-do notation
monadFixClassName = clsQual mONAD_FIX FSLIT("MonadFix") monadFixClassKey
-mfixName = methName monadFixClassName FSLIT("mfix") mfixIdKey
+mfixName = methName mONAD_FIX FSLIT("mfix") mfixIdKey
-- Arrow notation
arrAName = varQual aRROW FSLIT("arr") arrAIdKey
monadPlusClassName = clsQual mONAD FSLIT("MonadPlus") monadPlusClassKey
randomClassName = clsQual rANDOM FSLIT("Random") randomClassKey
randomGenClassName = clsQual rANDOM FSLIT("RandomGen") randomGenClassKey
+isStringClassName = clsQual dATA_STRING FSLIT("IsString") isStringClassKey
-- dotnet interop
objectTyConName = tcQual dOTNET FSLIT("Object") objectTyConKey
clsQual = mk_known_key_name clsName
mk_known_key_name space mod str uniq
- = mkExternalName uniq mod (mkOccNameFS space str)
- Nothing noSrcLoc
-
-conName :: Name -> FastString -> Unique -> Name
-conName tycon occ uniq
- = mkExternalName uniq (nameModule tycon) (mkOccNameFS dataName occ)
- (Just tycon) noSrcLoc
-
-methName :: Name -> FastString -> Unique -> Name
-methName cls occ uniq
- = mkExternalName uniq (nameModule cls) (mkVarOccFS occ)
- (Just cls) noSrcLoc
+ = mkExternalName uniq mod (mkOccNameFS space str) noSrcLoc
+
+conName :: Module -> FastString -> Unique -> Name
+conName mod occ uniq
+ = mkExternalName uniq mod (mkOccNameFS dataName occ) noSrcLoc
+
+methName :: Module -> FastString -> Unique -> Name
+methName mod occ uniq
+ = mkExternalName uniq mod (mkVarOccFS occ) noSrcLoc
\end{code}
%************************************************************************
monadPlusClassKey = mkPreludeClassUnique 30
randomClassKey = mkPreludeClassUnique 31
randomGenClassKey = mkPreludeClassUnique 32
+
+isStringClassKey = mkPreludeClassUnique 33
\end{code}
%************************************************************************
realWorldTyConKey = mkPreludeTyConUnique 34
stablePtrPrimTyConKey = mkPreludeTyConUnique 35
stablePtrTyConKey = mkPreludeTyConUnique 36
+
+anyPrimTyConKey = mkPreludeTyConUnique 37
+anyPrimTyCon1Key = mkPreludeTyConUnique 38
+
statePrimTyConKey = mkPreludeTyConUnique 50
stableNamePrimTyConKey = mkPreludeTyConUnique 51
stableNameTyConKey = mkPreludeTyConUnique 52
-- Super Kinds constructors
tySuperKindTyConKey = mkPreludeTyConUnique 85
-coSuperKindTyConKey = mkPreludeTyConUnique 86
+coSuperKindTyConKey = mkPreludeTyConUnique 86
-- Kind constructors
liftedTypeKindTyConKey = mkPreludeTyConUnique 87
instCoercionTyConKey = mkPreludeTyConUnique 97
unsafeCoercionTyConKey = mkPreludeTyConUnique 98
+unknownTyConKey = mkPreludeTyConUnique 99
+unknown1TyConKey = mkPreludeTyConUnique 130
+unknown2TyConKey = mkPreludeTyConUnique 131
+unknown3TyConKey = mkPreludeTyConUnique 132
+opaqueTyConKey = mkPreludeTyConUnique 133
+
+stringTyConKey = mkPreludeTyConUnique 134
+
---------------- Template Haskell -------------------
-- USES TyConUniques 100-129
breakpointIdKey = mkPreludeMiscIdUnique 62
breakpointCondIdKey = mkPreludeMiscIdUnique 63
-breakpointJumpIdKey = mkPreludeMiscIdUnique 64
-breakpointCondJumpIdKey = mkPreludeMiscIdUnique 65
+breakpointAutoIdKey = mkPreludeMiscIdUnique 64
+breakpointJumpIdKey = mkPreludeMiscIdUnique 65
+breakpointCondJumpIdKey = mkPreludeMiscIdUnique 66
+breakpointAutoJumpIdKey = mkPreludeMiscIdUnique 67
-inlineIdKey = mkPreludeMiscIdUnique 66
+inlineIdKey = mkPreludeMiscIdUnique 68
-- Parallel array functions
nullPIdKey = mkPreludeMiscIdUnique 80
mapPIdKey = mkPreludeMiscIdUnique 83
filterPIdKey = mkPreludeMiscIdUnique 84
zipPIdKey = mkPreludeMiscIdUnique 85
-crossPIdKey = mkPreludeMiscIdUnique 86
+crossMapPIdKey = mkPreludeMiscIdUnique 86
indexPIdKey = mkPreludeMiscIdUnique 87
toPIdKey = mkPreludeMiscIdUnique 88
enumFromToPIdKey = mkPreludeMiscIdUnique 89
choiceAIdKey = mkPreludeMiscIdUnique 123 -- |||
loopAIdKey = mkPreludeMiscIdUnique 124
+fromStringClassOpKey = mkPreludeMiscIdUnique 125
+
---------------- Template Haskell -------------------
-- USES IdUniques 200-399
-----------------------------------------------------
standardClassKeys = derivableClassKeys ++ numericClassKeys
++ [randomClassKey, randomGenClassKey,
functorClassKey,
- monadClassKey, monadPlusClassKey]
+ monadClassKey, monadPlusClassKey,
+ isStringClassKey
+ ]
\end{code}
@derivableClassKeys@ is also used in checking \tr{deriving} constructs