)
import BasicTypes ( Boxity(..), Arity )
import Name ( Name, mkInternalName, mkExternalName )
-import SrcLoc ( noSrcLoc )
+import SrcLoc
import FastString
\end{code}
This *local* name is used by the interactive stuff
\begin{code}
-itName uniq = mkInternalName uniq (mkOccNameFS varName FSLIT("it")) noSrcLoc
+itName uniq = mkInternalName uniq (mkOccNameFS varName FSLIT("it")) noSrcSpan
\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 = mkInternalName unboundKey (rdrNameOcc rdr_name) noSrcLoc
+mkUnboundName rdr_name = mkInternalName unboundKey (rdrNameOcc rdr_name) noSrcSpan
isUnboundName :: Name -> Bool
isUnboundName name = name `hasKey` unboundKey
basicKnownKeyNames
= genericTyConNames
++ typeableClassNames
+ ++ ndpNames
++ [ -- Type constructors (synonyms especially)
ioTyConName, ioDataConName,
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.
wordTyConName, word8TyConName, word16TyConName, word32TyConName, word64TyConName,
-- Others
- otherwiseIdName,
+ otherwiseIdName, inlineIdName,
plusIntegerName, timesIntegerName,
eqStringName, assertName, breakpointName, breakpointCondName,
- breakpointAutoName, opaqueTyConName,
+ breakpointAutoName, opaqueTyConName,
assertErrorName, runSTRepName,
printName, fstName, sndName,
genericTyConNames :: [Name]
genericTyConNames = [crossTyConName, plusTyConName, genUnitTyConName]
+
+ndpNames :: [Name]
+ndpNames = [ parrayTyConName, paTyConName, preprTyConName, prTyConName
+ , ndpCrossTyConName, ndpPlusTyConName, embedTyConName
+ , closureTyConName
+ , mkClosureName, applyClosureName
+ , mkClosurePName, applyClosurePName
+ , lengthPAName, replicatePAName, emptyPAName, packPAName,
+ combinePAName, intEqPAName ]
\end{code}
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")
rANDOM = mkBaseModule FSLIT("System.Random")
gLA_EXTS = mkBaseModule FSLIT("GHC.Exts")
+nDP_PARRAY = mkNDPModule FSLIT("Data.Array.Parallel.Lifted.PArray")
+nDP_UTILS = mkNDPModule FSLIT("Data.Array.Parallel.Lifted.Utils")
+nDP_CLOSURE = mkNDPModule FSLIT("Data.Array.Parallel.Lifted.Closure")
+nDP_INSTANCES = mkNDPModule FSLIT("Data.Array.Parallel.Lifted.Instances")
+
mAIN = mkMainModule_ mAIN_NAME
rOOT_MAIN = mkMainModule FSLIT(":Main") -- Root module for initialisation
mkBaseModule_ :: ModuleName -> Module
mkBaseModule_ m = mkModule basePackageId m
+mkNDPModule :: FastString -> Module
+mkNDPModule m = mkModule ndpPackageId (mkModuleNameFS m)
+
+mkNDPModule_ :: ModuleName -> Module
+mkNDPModule_ m = mkModule ndpPackageId m
+
mkMainModule :: FastString -> Module
mkMainModule m = mkModule mainPackageId (mkModuleNameFS m)
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")
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
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
= mkInternalName
breakpointJumpIdKey
(mkOccNameFS varName FSLIT("breakpointJump"))
- noSrcLoc
+ noSrcSpan
breakpointCondJumpName
= mkInternalName
breakpointCondJumpIdKey
(mkOccNameFS varName FSLIT("breakpointCondJump"))
- noSrcLoc
+ noSrcSpan
breakpointAutoJumpName
= mkInternalName
breakpointAutoJumpIdKey
(mkOccNameFS varName FSLIT("breakpointAutoJump"))
- noSrcLoc
+ noSrcSpan
-- PrelTup
fstName = varQual dATA_TUP FSLIT("fst") fstIdKey
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
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
marshalStringName = varQual dOTNET FSLIT("marshalString") marshalStringIdKey
unmarshalStringName = varQual dOTNET FSLIT("unmarshalString") unmarshalStringIdKey
checkDotnetResName = varQual dOTNET FSLIT("checkResult") checkDotnetResNameIdKey
+
+-- NDP stuff
+parrayTyConName = tcQual nDP_PARRAY FSLIT("PArray") parrayTyConKey
+paTyConName = tcQual nDP_PARRAY FSLIT("PA") paTyConKey
+preprTyConName = tcQual nDP_PARRAY FSLIT("PRepr") preprTyConKey
+prTyConName = clsQual nDP_PARRAY FSLIT("PR") prTyConKey
+ndpCrossTyConName = tcQual nDP_PARRAY FSLIT(":*:") ndpCrossTyConKey
+ndpPlusTyConName = tcQual nDP_PARRAY FSLIT(":+:") ndpPlusTyConKey
+embedTyConName = tcQual nDP_PARRAY FSLIT("Embed") embedTyConKey
+lengthPAName = varQual nDP_PARRAY FSLIT("lengthPA") lengthPAIdKey
+replicatePAName = varQual nDP_PARRAY FSLIT("replicatePA") replicatePAIdKey
+emptyPAName = varQual nDP_PARRAY FSLIT("emptyPA") emptyPAIdKey
+packPAName = varQual nDP_PARRAY FSLIT("packPA") packPAIdKey
+combinePAName = varQual nDP_PARRAY FSLIT("combinePA") combinePAIdKey
+intEqPAName = varQual nDP_UTILS FSLIT("intEqPA") intEqPAIdKey
+closureTyConName = tcQual nDP_CLOSURE FSLIT(":->") closureTyConKey
+mkClosureName = varQual nDP_CLOSURE FSLIT("mkClosure") mkClosureIdKey
+applyClosureName = varQual nDP_CLOSURE FSLIT("$:") applyClosureIdKey
+mkClosurePName = varQual nDP_CLOSURE FSLIT("mkClosureP") mkClosurePIdKey
+applyClosurePName = varQual nDP_CLOSURE FSLIT("$:^") applyClosurePIdKey
\end{code}
%************************************************************************
clsQual = mk_known_key_name clsName
mk_known_key_name space mod str uniq
- = mkExternalName uniq mod (mkOccNameFS space str) noSrcLoc
+ = mkExternalName uniq mod (mkOccNameFS space str) noSrcSpan
conName :: Module -> FastString -> Unique -> Name
conName mod occ uniq
- = mkExternalName uniq mod (mkOccNameFS dataName occ) noSrcLoc
+ = mkExternalName uniq mod (mkOccNameFS dataName occ) noSrcSpan
methName :: Module -> FastString -> Unique -> Name
methName mod occ uniq
- = mkExternalName uniq mod (mkVarOccFS occ) noSrcLoc
+ = mkExternalName uniq mod (mkVarOccFS occ) noSrcSpan
\end{code}
%************************************************************************
monadPlusClassKey = mkPreludeClassUnique 30
randomClassKey = mkPreludeClassUnique 31
randomGenClassKey = mkPreludeClassUnique 32
+
+isStringClassKey = mkPreludeClassUnique 33
\end{code}
%************************************************************************
instCoercionTyConKey = mkPreludeTyConUnique 97
unsafeCoercionTyConKey = mkPreludeTyConUnique 98
-opaqueTyConKey = mkPreludeTyConUnique 103
+unknownTyConKey = mkPreludeTyConUnique 99
+unknown1TyConKey = mkPreludeTyConUnique 130
+unknown2TyConKey = mkPreludeTyConUnique 131
+unknown3TyConKey = mkPreludeTyConUnique 132
+opaqueTyConKey = mkPreludeTyConUnique 133
+
+stringTyConKey = mkPreludeTyConUnique 134
+
+parrayTyConKey = mkPreludeTyConUnique 135
+closureTyConKey = mkPreludeTyConUnique 136
+paTyConKey = mkPreludeTyConUnique 137
+preprTyConKey = mkPreludeTyConUnique 138
+embedTyConKey = mkPreludeTyConUnique 139
+ndpCrossTyConKey = mkPreludeTyConUnique 140
+ndpPlusTyConKey = mkPreludeTyConUnique 141
+prTyConKey = mkPreludeTyConUnique 142
+
---------------- Template Haskell -------------------
-- USES TyConUniques 100-129
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
+
+-- Flattened parallel array functions
+mkClosureIdKey = mkPreludeMiscIdUnique 126
+applyClosureIdKey = mkPreludeMiscIdUnique 127
+mkClosurePIdKey = mkPreludeMiscIdUnique 128
+applyClosurePIdKey = mkPreludeMiscIdUnique 129
+closurePAIdKey = mkPreludeMiscIdUnique 130
+lengthPAIdKey = mkPreludeMiscIdUnique 131
+replicatePAIdKey = mkPreludeMiscIdUnique 132
+emptyPAIdKey = mkPreludeMiscIdUnique 133
+packPAIdKey = mkPreludeMiscIdUnique 134
+combinePAIdKey = mkPreludeMiscIdUnique 135
+intEqPAIdKey = mkPreludeMiscIdUnique 136
+
---------------- 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