2 % (c) The GRASP/AQUA Project, Glasgow University, 1992-1998
4 \section[PrelNames]{Definitions of prelude modules}
6 The strings identify built-in prelude modules. They are
7 defined here so as to avod
9 [oh dear, looks like the recursive module monster caught up with
10 and gobbled whoever was writing the above :-) -- SOF ]
14 Unique, Uniquable(..), hasKey, -- Re-exported for convenience
16 -----------------------------------------------------------
17 module PrelNames, -- A huge bunch of (a) RdrNames, e.g. intTyCon_RDR
18 -- (b) Uniques e.g. intTyConKey
19 -- So many that we export them all
21 -----------------------------------------------------------
23 mkTupNameStr, mkTupConRdrName,
25 ------------------------------------------------------------
26 -- Goups of classes and types
27 needsDataDeclCtxtClassKeys, cCallishClassKeys, noDictClassKeys,
28 fractionalClassKeys, numericClassKeys, standardClassKeys,
29 derivingOccurrences, -- For a given class C, this tells what other
30 derivableClassKeys, -- things are needed as a result of a
32 numericTyKeys, cCallishTyKeys,
34 mkUnboundName, isUnboundName
37 #include "HsVersions.h"
39 import Module ( ModuleName, mkPrelModule, mkHomeModule, mkModuleName )
40 import OccName ( NameSpace, UserFS, varName, dataName, tcName, clsName,
43 import RdrName ( RdrName, mkOrig, mkUnqual )
45 import Unique ( Unique, Uniquable(..), hasKey,
46 mkPreludeMiscIdUnique, mkPreludeDataConUnique,
47 mkPreludeTyConUnique, mkPreludeClassUnique,
50 import BasicTypes ( Boxity(..), Arity )
51 import UniqFM ( UniqFM, listToUFM )
52 import Name ( Name, mkInternalName, mkKnownKeyExternalName, nameRdrName )
53 import RdrName ( rdrNameOcc )
54 import SrcLoc ( builtinSrcLoc, noSrcLoc )
55 import Util ( nOfThem )
56 import Panic ( panic )
60 %************************************************************************
62 \subsection{Local Names}
64 %************************************************************************
66 This *local* name is used by the interactive stuff
69 itName uniq = mkInternalName uniq (mkOccFS varName FSLIT("it")) noSrcLoc
73 -- mkUnboundName makes a place-holder Name; it shouldn't be looked at except possibly
74 -- during compiler debugging.
75 mkUnboundName :: RdrName -> Name
76 mkUnboundName rdr_name = mkInternalName unboundKey (rdrNameOcc rdr_name) builtinSrcLoc
78 isUnboundName :: Name -> Bool
79 isUnboundName name = name `hasKey` unboundKey
83 %************************************************************************
85 \subsection{Known key Names}
87 %************************************************************************
89 This section tells what the compiler knows about the assocation of
90 names with uniques. These ones are the *non* wired-in ones. The
91 wired in ones are defined in TysWiredIn etc.
94 knownKeyNames :: [Name]
97 -- Type constructors (synonyms especially)
98 ioTyConName, ioDataConName,
105 mutableByteArrayTyConName,
110 stablePtrDataConName,
112 -- Classes. *Must* include:
113 -- classes that are grabbed by key (e.g., eqClassKey)
114 -- classes in "Class.standardClassKeys" (quite a few)
115 eqClassName, -- mentioned, derivable
116 ordClassName, -- derivable
117 boundedClassName, -- derivable
118 numClassName, -- mentioned, numeric
119 enumClassName, -- derivable
122 showClassName, -- derivable
123 realClassName, -- numeric
124 integralClassName, -- numeric
125 fractionalClassName, -- numeric
126 floatingClassName, -- numeric
127 realFracClassName, -- numeric
128 realFloatClassName, -- numeric
129 readClassName, -- derivable
130 ixClassName, -- derivable (but it isn't Prelude.Ix; hmmm)
131 cCallableClassName, -- mentioned, ccallish
132 cReturnableClassName, -- mentioned, ccallish
152 -- not class methods, but overloaded (for parallel arrays)
167 unpackCStringAppendName,
168 unpackCStringFoldrName,
169 unpackCStringUtf8Name,
179 -- Parallel array operations
193 -- FFI primitive types that are not wired-in.
212 splitName, fstName, sndName, -- Used by splittery
214 -- Others (needed for flattening and not mentioned before)
221 %************************************************************************
223 \subsection{Module names}
225 %************************************************************************
228 pRELUDE_Name = mkModuleName "Prelude"
229 gHC_PRIM_Name = mkModuleName "GHC.Prim" -- Primitive types and values
230 pREL_BASE_Name = mkModuleName "GHC.Base"
231 pREL_ENUM_Name = mkModuleName "GHC.Enum"
232 pREL_SHOW_Name = mkModuleName "GHC.Show"
233 pREL_READ_Name = mkModuleName "GHC.Read"
234 pREL_NUM_Name = mkModuleName "GHC.Num"
235 pREL_LIST_Name = mkModuleName "GHC.List"
236 pREL_PARR_Name = mkModuleName "GHC.PArr"
237 pREL_TUP_Name = mkModuleName "Data.Tuple"
238 pREL_PACK_Name = mkModuleName "GHC.Pack"
239 pREL_CONC_Name = mkModuleName "GHC.Conc"
240 pREL_IO_BASE_Name = mkModuleName "GHC.IOBase"
241 pREL_ST_Name = mkModuleName "GHC.ST"
242 pREL_ARR_Name = mkModuleName "GHC.Arr"
243 pREL_BYTEARR_Name = mkModuleName "PrelByteArr"
244 fOREIGN_PTR_Name = mkModuleName "Foreign.ForeignPtr"
245 pREL_STABLE_Name = mkModuleName "GHC.Stable"
246 pREL_ADDR_Name = mkModuleName "GHC.Addr"
247 pREL_PTR_Name = mkModuleName "GHC.Ptr"
248 pREL_ERR_Name = mkModuleName "GHC.Err"
249 pREL_REAL_Name = mkModuleName "GHC.Real"
250 pREL_FLOAT_Name = mkModuleName "GHC.Float"
251 pREL_TOP_HANDLER_Name = mkModuleName "GHC.TopHandler"
252 sYSTEM_IO_Name = mkModuleName "System.IO"
254 rEAD_PREC_Name = mkModuleName "Text.ParserCombinators.ReadPrec"
255 lEX_Name = mkModuleName "Text.Read.Lex"
257 mAIN_Name = mkModuleName "Main"
258 pREL_INT_Name = mkModuleName "GHC.Int"
259 pREL_WORD_Name = mkModuleName "GHC.Word"
261 fOREIGNOBJ_Name = mkModuleName "ForeignObj"
262 aDDR_Name = mkModuleName "Addr"
264 gLA_EXTS_Name = mkModuleName "GHC.Exts"
266 gHC_PRIM = mkPrelModule gHC_PRIM_Name
267 pREL_BASE = mkPrelModule pREL_BASE_Name
268 pREL_ADDR = mkPrelModule pREL_ADDR_Name
269 pREL_PTR = mkPrelModule pREL_PTR_Name
270 pREL_STABLE = mkPrelModule pREL_STABLE_Name
271 pREL_IO_BASE = mkPrelModule pREL_IO_BASE_Name
272 pREL_PACK = mkPrelModule pREL_PACK_Name
273 pREL_ERR = mkPrelModule pREL_ERR_Name
274 pREL_NUM = mkPrelModule pREL_NUM_Name
275 pREL_REAL = mkPrelModule pREL_REAL_Name
276 pREL_FLOAT = mkPrelModule pREL_FLOAT_Name
277 pRELUDE = mkPrelModule pRELUDE_Name
279 iNTERACTIVE = mkHomeModule (mkModuleName "$Interactive")
282 %************************************************************************
284 \subsection{Constructing the names of tuples
286 %************************************************************************
289 mkTupNameStr :: Boxity -> Int -> (ModuleName, UserFS)
291 mkTupNameStr Boxed 0 = (pREL_BASE_Name, FSLIT("()"))
292 mkTupNameStr Boxed 1 = panic "Name.mkTupNameStr: 1 ???"
293 mkTupNameStr Boxed 2 = (pREL_TUP_Name, _PK_ "(,)") -- not strictly necessary
294 mkTupNameStr Boxed 3 = (pREL_TUP_Name, _PK_ "(,,)") -- ditto
295 mkTupNameStr Boxed 4 = (pREL_TUP_Name, _PK_ "(,,,)") -- ditto
296 mkTupNameStr Boxed n = (pREL_TUP_Name, _PK_ ("(" ++ nOfThem (n-1) ',' ++ ")"))
298 mkTupNameStr Unboxed 0 = panic "Name.mkUbxTupNameStr: 0 ???"
299 mkTupNameStr Unboxed 1 = (gHC_PRIM_Name, _PK_ "(# #)") -- 1 and 0 both make sense!!!
300 mkTupNameStr Unboxed 2 = (gHC_PRIM_Name, _PK_ "(#,#)")
301 mkTupNameStr Unboxed 3 = (gHC_PRIM_Name, _PK_ "(#,,#)")
302 mkTupNameStr Unboxed 4 = (gHC_PRIM_Name, _PK_ "(#,,,#)")
303 mkTupNameStr Unboxed n = (gHC_PRIM_Name, _PK_ ("(#" ++ nOfThem (n-1) ',' ++ "#)"))
305 mkTupConRdrName :: NameSpace -> Boxity -> Arity -> RdrName
306 mkTupConRdrName space boxity arity = case mkTupNameStr boxity arity of
307 (mod, occ) -> mkOrig space mod occ
311 %************************************************************************
313 \subsection{Unqualified RdrNames}
315 %************************************************************************
318 main_RDR_Unqual :: RdrName
319 main_RDR_Unqual = mkUnqual varName FSLIT("main")
320 -- Don't get a RdrName from PrelNames.mainName, because nameRdrName
321 -- gets an Orig RdrName, and we want a Qual or Unqual one. An Unqual
326 %************************************************************************
328 \subsection{Commonly-used RdrNames}
330 %************************************************************************
332 Many of these Names are not really "built in", but some parts of the
333 compiler (notably the deriving mechanism) need to mention their names,
334 and it's convenient to write them all down in one place.
337 dollarMainName = varQual mAIN_Name FSLIT("$main") dollarMainKey
338 runMainName = varQual pREL_TOP_HANDLER_Name FSLIT("runMain") runMainKey
340 -- Stuff from GHC.Prim
341 usOnceTyConName = kindQual FSLIT(".") usOnceTyConKey
342 usManyTyConName = kindQual FSLIT("!") usManyTyConKey
343 superKindName = kindQual FSLIT("KX") kindConKey
344 superBoxityName = kindQual FSLIT("BX") boxityConKey
345 liftedConName = kindQual FSLIT("*") liftedConKey
346 unliftedConName = kindQual FSLIT("#") unliftedConKey
347 openKindConName = kindQual FSLIT("?") anyBoxConKey
348 usageKindConName = kindQual FSLIT("$") usageConKey
349 typeConName = kindQual FSLIT("Type") typeConKey
351 funTyConName = tcQual gHC_PRIM_Name FSLIT("(->)") funTyConKey
352 charPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Char#") charPrimTyConKey
353 intPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Int#") intPrimTyConKey
354 int32PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Int32#") int32PrimTyConKey
355 int64PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Int64#") int64PrimTyConKey
356 wordPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Word#") wordPrimTyConKey
357 word32PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Word32#") word32PrimTyConKey
358 word64PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Word64#") word64PrimTyConKey
359 addrPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Addr#") addrPrimTyConKey
360 floatPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Float#") floatPrimTyConKey
361 doublePrimTyConName = tcQual gHC_PRIM_Name FSLIT("Double#") doublePrimTyConKey
362 statePrimTyConName = tcQual gHC_PRIM_Name FSLIT("State#") statePrimTyConKey
363 realWorldTyConName = tcQual gHC_PRIM_Name FSLIT("RealWorld") realWorldTyConKey
364 arrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Array#") arrayPrimTyConKey
365 byteArrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("ByteArray#") byteArrayPrimTyConKey
366 mutableArrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MutableArray#") mutableArrayPrimTyConKey
367 mutableByteArrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MutableByteArray#") mutableByteArrayPrimTyConKey
368 mutVarPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MutVar#") mutVarPrimTyConKey
369 mVarPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MVar#") mVarPrimTyConKey
370 stablePtrPrimTyConName = tcQual gHC_PRIM_Name FSLIT("StablePtr#") stablePtrPrimTyConKey
371 stableNamePrimTyConName = tcQual gHC_PRIM_Name FSLIT("StableName#") stableNamePrimTyConKey
372 foreignObjPrimTyConName = tcQual gHC_PRIM_Name FSLIT("ForeignObj#") foreignObjPrimTyConKey
373 bcoPrimTyConName = tcQual gHC_PRIM_Name FSLIT("BCO#") bcoPrimTyConKey
374 weakPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Weak#") weakPrimTyConKey
375 threadIdPrimTyConName = tcQual gHC_PRIM_Name FSLIT("ThreadId#") threadIdPrimTyConKey
376 cCallableClassName = clsQual gHC_PRIM_Name FSLIT("CCallable") cCallableClassKey
377 cReturnableClassName = clsQual gHC_PRIM_Name FSLIT("CReturnable") cReturnableClassKey
379 -- PrelBase data types and constructors
380 charTyConName = tcQual pREL_BASE_Name FSLIT("Char") charTyConKey
381 charDataConName = dataQual pREL_BASE_Name FSLIT("C#") charDataConKey
382 intTyConName = tcQual pREL_BASE_Name FSLIT("Int") intTyConKey
383 intDataConName = dataQual pREL_BASE_Name FSLIT("I#") intDataConKey
384 orderingTyConName = tcQual pREL_BASE_Name FSLIT("Ordering") orderingTyConKey
385 boolTyConName = tcQual pREL_BASE_Name FSLIT("Bool") boolTyConKey
386 falseDataConName = dataQual pREL_BASE_Name FSLIT("False") falseDataConKey
387 trueDataConName = dataQual pREL_BASE_Name FSLIT("True") trueDataConKey
388 listTyConName = tcQual pREL_BASE_Name FSLIT("[]") listTyConKey
389 nilDataConName = dataQual pREL_BASE_Name FSLIT("[]") nilDataConKey
390 consDataConName = dataQual pREL_BASE_Name FSLIT(":") consDataConKey
393 fstName = varQual pREL_TUP_Name FSLIT("fst") fstIdKey
394 sndName = varQual pREL_TUP_Name FSLIT("snd") sndIdKey
397 crossTyConName = tcQual pREL_BASE_Name FSLIT(":*:") crossTyConKey
398 crossDataConName = dataQual pREL_BASE_Name FSLIT(":*:") crossDataConKey
399 plusTyConName = tcQual pREL_BASE_Name FSLIT(":+:") plusTyConKey
400 inlDataConName = dataQual pREL_BASE_Name FSLIT("Inl") inlDataConKey
401 inrDataConName = dataQual pREL_BASE_Name FSLIT("Inr") inrDataConKey
402 genUnitTyConName = tcQual pREL_BASE_Name FSLIT("Unit") genUnitTyConKey
403 genUnitDataConName = dataQual pREL_BASE_Name FSLIT("Unit") genUnitDataConKey
405 -- Random PrelBase functions
406 unsafeCoerceName = varQual pREL_BASE_Name FSLIT("unsafeCoerce")
408 otherwiseIdName = varQual pREL_BASE_Name FSLIT("otherwise") otherwiseIdKey
409 appendName = varQual pREL_BASE_Name FSLIT("++") appendIdKey
410 foldrName = varQual pREL_BASE_Name FSLIT("foldr") foldrIdKey
411 mapName = varQual pREL_BASE_Name FSLIT("map") mapIdKey
412 buildName = varQual pREL_BASE_Name FSLIT("build") buildIdKey
413 augmentName = varQual pREL_BASE_Name FSLIT("augment") augmentIdKey
414 eqStringName = varQual pREL_BASE_Name FSLIT("eqString") eqStringIdKey
415 andName = varQual pREL_BASE_Name FSLIT("&&") andIdKey
416 orName = varQual pREL_BASE_Name FSLIT("||") orIdKey
419 unpackCStringName = varQual pREL_BASE_Name FSLIT("unpackCString#") unpackCStringIdKey
420 unpackCStringAppendName = varQual pREL_BASE_Name FSLIT("unpackAppendCString#") unpackCStringAppendIdKey
421 unpackCStringFoldrName = varQual pREL_BASE_Name FSLIT("unpackFoldrCString#") unpackCStringFoldrIdKey
422 unpackCStringUtf8Name = varQual pREL_BASE_Name FSLIT("unpackCStringUtf8#") unpackCStringUtf8IdKey
424 -- Classes Eq and Ord
425 eqClassName = clsQual pREL_BASE_Name FSLIT("Eq") eqClassKey
426 ordClassName = clsQual pREL_BASE_Name FSLIT("Ord") ordClassKey
427 eqName = varQual pREL_BASE_Name FSLIT("==") eqClassOpKey
428 geName = varQual pREL_BASE_Name FSLIT(">=") geClassOpKey
431 monadClassName = clsQual pREL_BASE_Name FSLIT("Monad") monadClassKey
432 thenMName = varQual pREL_BASE_Name FSLIT(">>") thenMClassOpKey
433 bindMName = varQual pREL_BASE_Name FSLIT(">>=") bindMClassOpKey
434 returnMName = varQual pREL_BASE_Name FSLIT("return") returnMClassOpKey
435 failMName = varQual pREL_BASE_Name FSLIT("fail") failMClassOpKey
438 functorClassName = clsQual pREL_BASE_Name FSLIT("Functor") functorClassKey
441 showClassName = clsQual pREL_SHOW_Name FSLIT("Show") showClassKey
444 readClassName = clsQual pREL_READ_Name FSLIT("Read") readClassKey
447 numClassName = clsQual pREL_NUM_Name FSLIT("Num") numClassKey
448 fromIntegerName = varQual pREL_NUM_Name FSLIT("fromInteger") fromIntegerClassOpKey
449 minusName = varQual pREL_NUM_Name FSLIT("-") minusClassOpKey
450 negateName = varQual pREL_NUM_Name FSLIT("negate") negateClassOpKey
451 plusIntegerName = varQual pREL_NUM_Name FSLIT("plusInteger") plusIntegerIdKey
452 timesIntegerName = varQual pREL_NUM_Name FSLIT("timesInteger") timesIntegerIdKey
453 integerTyConName = tcQual pREL_NUM_Name FSLIT("Integer") integerTyConKey
454 smallIntegerDataConName = dataQual pREL_NUM_Name FSLIT("S#") smallIntegerDataConKey
455 largeIntegerDataConName = dataQual pREL_NUM_Name FSLIT("J#") largeIntegerDataConKey
457 -- PrelReal types and classes
458 rationalTyConName = tcQual pREL_REAL_Name FSLIT("Rational") rationalTyConKey
459 ratioTyConName = tcQual pREL_REAL_Name FSLIT("Ratio") ratioTyConKey
460 ratioDataConName = dataQual pREL_REAL_Name FSLIT(":%") ratioDataConKey
461 realClassName = clsQual pREL_REAL_Name FSLIT("Real") realClassKey
462 integralClassName = clsQual pREL_REAL_Name FSLIT("Integral") integralClassKey
463 realFracClassName = clsQual pREL_REAL_Name FSLIT("RealFrac") realFracClassKey
464 fractionalClassName = clsQual pREL_REAL_Name FSLIT("Fractional") fractionalClassKey
465 fromRationalName = varQual pREL_REAL_Name FSLIT("fromRational") fromRationalClassOpKey
468 floatTyConName = tcQual pREL_FLOAT_Name FSLIT("Float") floatTyConKey
469 floatDataConName = dataQual pREL_FLOAT_Name FSLIT("F#") floatDataConKey
470 doubleTyConName = tcQual pREL_FLOAT_Name FSLIT("Double") doubleTyConKey
471 doubleDataConName = dataQual pREL_FLOAT_Name FSLIT("D#") doubleDataConKey
472 floatingClassName = clsQual pREL_FLOAT_Name FSLIT("Floating") floatingClassKey
473 realFloatClassName = clsQual pREL_FLOAT_Name FSLIT("RealFloat") realFloatClassKey
476 ixClassName = clsQual pREL_ARR_Name FSLIT("Ix") ixClassKey
479 enumClassName = clsQual pREL_ENUM_Name FSLIT("Enum") enumClassKey
480 toEnumName = varQual pREL_ENUM_Name FSLIT("toEnum") toEnumClassOpKey
481 fromEnumName = varQual pREL_ENUM_Name FSLIT("fromEnum") fromEnumClassOpKey
482 enumFromName = varQual pREL_ENUM_Name FSLIT("enumFrom") enumFromClassOpKey
483 enumFromToName = varQual pREL_ENUM_Name FSLIT("enumFromTo") enumFromToClassOpKey
484 enumFromThenName = varQual pREL_ENUM_Name FSLIT("enumFromThen") enumFromThenClassOpKey
485 enumFromThenToName = varQual pREL_ENUM_Name FSLIT("enumFromThenTo") enumFromThenToClassOpKey
487 -- Overloaded via Class Enum
488 enumFromToPName = varQual pREL_PARR_Name FSLIT("enumFromToP") enumFromToPIdKey
489 enumFromThenToPName= varQual pREL_PARR_Name FSLIT("enumFromThenToP") enumFromThenToPIdKey
492 boundedClassName = clsQual pREL_ENUM_Name FSLIT("Bounded") boundedClassKey
495 concatName = varQual pREL_LIST_Name FSLIT("concat") concatIdKey
496 filterName = varQual pREL_LIST_Name FSLIT("filter") filterIdKey
497 zipName = varQual pREL_LIST_Name FSLIT("zip") zipIdKey
499 -- parallel array types and functions
500 parrTyConName = tcQual pREL_PARR_Name FSLIT("[::]") parrTyConKey
501 parrDataConName = dataQual pREL_PARR_Name FSLIT("PArr") parrDataConKey
502 nullPName = varQual pREL_PARR_Name FSLIT("nullP") nullPIdKey
503 lengthPName = varQual pREL_PARR_Name FSLIT("lengthP") lengthPIdKey
504 replicatePName = varQual pREL_PARR_Name FSLIT("replicateP") replicatePIdKey
505 mapPName = varQual pREL_PARR_Name FSLIT("mapP") mapPIdKey
506 filterPName = varQual pREL_PARR_Name FSLIT("filterP") filterPIdKey
507 zipPName = varQual pREL_PARR_Name FSLIT("zipP") zipPIdKey
508 crossPName = varQual pREL_PARR_Name FSLIT("crossP") crossPIdKey
509 indexPName = varQual pREL_PARR_Name FSLIT("!:") indexPIdKey
510 toPName = varQual pREL_PARR_Name FSLIT("toP") toPIdKey
511 bpermutePName = varQual pREL_PARR_Name FSLIT("bpermuteP") bpermutePIdKey
512 bpermuteDftPName = varQual pREL_PARR_Name FSLIT("bpermuteDftP")
514 indexOfPName = varQual pREL_PARR_Name FSLIT("indexOfP") indexOfPIdKey
517 ioTyConName = tcQual pREL_IO_BASE_Name FSLIT("IO") ioTyConKey
518 ioDataConName = dataQual pREL_IO_BASE_Name FSLIT("IO") ioDataConKey
519 thenIOName = varQual pREL_IO_BASE_Name FSLIT("thenIO") thenIOIdKey
520 bindIOName = varQual pREL_IO_BASE_Name FSLIT("bindIO") bindIOIdKey
521 returnIOName = varQual pREL_IO_BASE_Name FSLIT("returnIO") returnIOIdKey
522 failIOName = varQual pREL_IO_BASE_Name FSLIT("failIO") failIOIdKey
525 printName = varQual sYSTEM_IO_Name FSLIT("print") printIdKey
527 -- Int, Word, and Addr things
528 int8TyConName = tcQual pREL_INT_Name FSLIT("Int8") int8TyConKey
529 int16TyConName = tcQual pREL_INT_Name FSLIT("Int16") int16TyConKey
530 int32TyConName = tcQual pREL_INT_Name FSLIT("Int32") int32TyConKey
531 int64TyConName = tcQual pREL_INT_Name FSLIT("Int64") int64TyConKey
533 word8TyConName = tcQual pREL_WORD_Name FSLIT("Word8") word8TyConKey
534 word16TyConName = tcQual pREL_WORD_Name FSLIT("Word16") word16TyConKey
535 word32TyConName = tcQual pREL_WORD_Name FSLIT("Word32") word32TyConKey
536 word64TyConName = tcQual pREL_WORD_Name FSLIT("Word64") word64TyConKey
538 wordTyConName = tcQual pREL_WORD_Name FSLIT("Word") wordTyConKey
539 wordDataConName = dataQual pREL_WORD_Name FSLIT("W#") wordDataConKey
541 addrTyConName = tcQual aDDR_Name FSLIT("Addr") addrTyConKey
542 addrDataConName = dataQual aDDR_Name FSLIT("A#") addrDataConKey
544 ptrTyConName = tcQual pREL_PTR_Name FSLIT("Ptr") ptrTyConKey
545 ptrDataConName = dataQual pREL_PTR_Name FSLIT("Ptr") ptrDataConKey
547 funPtrTyConName = tcQual pREL_PTR_Name FSLIT("FunPtr") funPtrTyConKey
548 funPtrDataConName = dataQual pREL_PTR_Name FSLIT("FunPtr") funPtrDataConKey
551 byteArrayTyConName = tcQual pREL_BYTEARR_Name FSLIT("ByteArray") byteArrayTyConKey
552 mutableByteArrayTyConName = tcQual pREL_BYTEARR_Name FSLIT("MutableByteArray") mutableByteArrayTyConKey
554 -- Foreign objects and weak pointers
555 foreignObjTyConName = tcQual fOREIGNOBJ_Name FSLIT("ForeignObj") foreignObjTyConKey
556 foreignObjDataConName = dataQual fOREIGNOBJ_Name FSLIT("ForeignObj") foreignObjDataConKey
557 foreignPtrTyConName = tcQual fOREIGN_PTR_Name FSLIT("ForeignPtr") foreignPtrTyConKey
558 foreignPtrDataConName = dataQual fOREIGN_PTR_Name FSLIT("ForeignPtr") foreignPtrDataConKey
559 stablePtrTyConName = tcQual pREL_STABLE_Name FSLIT("StablePtr") stablePtrTyConKey
560 stablePtrDataConName = dataQual pREL_STABLE_Name FSLIT("StablePtr") stablePtrDataConKey
561 deRefStablePtrName = varQual pREL_STABLE_Name FSLIT("deRefStablePtr") deRefStablePtrIdKey
562 newStablePtrName = varQual pREL_STABLE_Name FSLIT("newStablePtr") newStablePtrIdKey
564 assertName = varQual gHC_PRIM_Name FSLIT("assert") assertIdKey
565 getTagName = varQual gHC_PRIM_Name FSLIT("getTag#") getTagIdKey
567 errorName = varQual pREL_ERR_Name FSLIT("error") errorIdKey
568 runSTRepName = varQual pREL_ST_Name FSLIT("runSTRep") runSTRepIdKey
570 -- The "split" Id for splittable implicit parameters
571 splitName = varQual gLA_EXTS_Name FSLIT("split") splitIdKey
574 %************************************************************************
576 \subsection{Known names}
578 %************************************************************************
580 The following names are known to the compiler, but they don't require
581 pre-assigned keys. Mostly these names are used in generating deriving
582 code, which is passed through the renamer anyway.
584 THEY ARE ALL ORIGINAL NAMES, HOWEVER
588 tupleCon_RDR, tupleTyCon_RDR :: Int -> RdrName
589 ubxTupleCon_RDR, ubxTupleTyCon_RDR :: Int -> RdrName
591 tupleCon_RDR = mkTupConRdrName dataName Boxed
592 tupleTyCon_RDR = mkTupConRdrName tcName Boxed
593 ubxTupleCon_RDR = mkTupConRdrName dataName Unboxed
594 ubxTupleTyCon_RDR = mkTupConRdrName tcName Unboxed
596 unitCon_RDR = dataQual_RDR pREL_BASE_Name FSLIT("()")
597 unitTyCon_RDR = tcQual_RDR pREL_BASE_Name FSLIT("()")
599 and_RDR = varQual_RDR pREL_BASE_Name FSLIT("&&")
600 not_RDR = varQual_RDR pREL_BASE_Name FSLIT("not")
601 compose_RDR = varQual_RDR pREL_BASE_Name FSLIT(".")
602 ne_RDR = varQual_RDR pREL_BASE_Name FSLIT("/=")
603 le_RDR = varQual_RDR pREL_BASE_Name FSLIT("<=")
604 lt_RDR = varQual_RDR pREL_BASE_Name FSLIT("<")
605 gt_RDR = varQual_RDR pREL_BASE_Name FSLIT(">")
606 ltTag_RDR = dataQual_RDR pREL_BASE_Name FSLIT("LT")
607 eqTag_RDR = dataQual_RDR pREL_BASE_Name FSLIT("EQ")
608 gtTag_RDR = dataQual_RDR pREL_BASE_Name FSLIT("GT")
609 max_RDR = varQual_RDR pREL_BASE_Name FSLIT("max")
610 min_RDR = varQual_RDR pREL_BASE_Name FSLIT("min")
611 compare_RDR = varQual_RDR pREL_BASE_Name FSLIT("compare")
612 showList_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showList")
613 showList___RDR = varQual_RDR pREL_SHOW_Name FSLIT("showList__")
614 showsPrec_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showsPrec")
615 showSpace_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showSpace")
616 showString_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showString")
617 showParen_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showParen")
619 readsPrec_RDR = varQual_RDR pREL_READ_Name FSLIT("readsPrec")
620 readPrec_RDR = varQual_RDR pREL_READ_Name FSLIT("readPrec")
621 readListPrec_RDR = varQual_RDR pREL_READ_Name FSLIT("readListPrec")
622 readList_RDR = varQual_RDR pREL_READ_Name FSLIT("readList")
624 readListDefault_RDR = varQual_RDR pREL_READ_Name FSLIT("readListDefault")
625 readListPrecDefault_RDR = varQual_RDR pREL_READ_Name FSLIT("readListPrecDefault")
626 parens_RDR = varQual_RDR pREL_READ_Name FSLIT("parens")
627 choose_RDR = varQual_RDR pREL_READ_Name FSLIT("choose")
628 lexP_RDR = varQual_RDR pREL_READ_Name FSLIT("lexP")
631 step_RDR = varQual_RDR rEAD_PREC_Name FSLIT("step")
632 reset_RDR = varQual_RDR rEAD_PREC_Name FSLIT("reset")
633 alt_RDR = varQual_RDR rEAD_PREC_Name FSLIT("+++")
634 prec_RDR = varQual_RDR rEAD_PREC_Name FSLIT("prec")
637 symbol_RDR = dataQual_RDR lEX_Name FSLIT("Symbol")
638 ident_RDR = dataQual_RDR lEX_Name FSLIT("Ident")
639 single_RDR = dataQual_RDR lEX_Name FSLIT("Single")
641 times_RDR = varQual_RDR pREL_NUM_Name FSLIT("*")
642 plus_RDR = varQual_RDR pREL_NUM_Name FSLIT("+")
643 negate_RDR = varQual_RDR pREL_NUM_Name FSLIT("negate")
644 range_RDR = varQual_RDR pREL_ARR_Name FSLIT("range")
645 index_RDR = varQual_RDR pREL_ARR_Name FSLIT("index")
646 inRange_RDR = varQual_RDR pREL_ARR_Name FSLIT("inRange")
647 succ_RDR = varQual_RDR pREL_ENUM_Name FSLIT("succ")
648 pred_RDR = varQual_RDR pREL_ENUM_Name FSLIT("pred")
649 minBound_RDR = varQual_RDR pREL_ENUM_Name FSLIT("minBound")
650 maxBound_RDR = varQual_RDR pREL_ENUM_Name FSLIT("maxBound")
651 assertErr_RDR = varQual_RDR pREL_ERR_Name FSLIT("assertError")
654 These RDR names also have known keys, so we need to get back the RDR names to
655 populate the occurrence list above.
658 funTyCon_RDR = nameRdrName funTyConName
659 nilCon_RDR = nameRdrName nilDataConName
660 listTyCon_RDR = nameRdrName listTyConName
661 parrTyCon_RDR = nameRdrName parrTyConName
662 ioTyCon_RDR = nameRdrName ioTyConName
663 intTyCon_RDR = nameRdrName intTyConName
664 eq_RDR = nameRdrName eqName
665 ge_RDR = nameRdrName geName
666 numClass_RDR = nameRdrName numClassName
667 ordClass_RDR = nameRdrName ordClassName
668 map_RDR = nameRdrName mapName
669 append_RDR = nameRdrName appendName
670 foldr_RDR = nameRdrName foldrName
671 build_RDR = nameRdrName buildName
672 enumFromTo_RDR = nameRdrName enumFromToName
673 returnM_RDR = nameRdrName returnMName
674 bindM_RDR = nameRdrName bindMName
675 failM_RDR = nameRdrName failMName
676 false_RDR = nameRdrName falseDataConName
677 true_RDR = nameRdrName trueDataConName
678 error_RDR = nameRdrName errorName
679 getTag_RDR = nameRdrName getTagName
680 fromEnum_RDR = nameRdrName fromEnumName
681 toEnum_RDR = nameRdrName toEnumName
682 enumFrom_RDR = nameRdrName enumFromName
683 mkInt_RDR = nameRdrName intDataConName
684 enumFromThen_RDR = nameRdrName enumFromThenName
685 enumFromThenTo_RDR = nameRdrName enumFromThenToName
686 ratioDataCon_RDR = nameRdrName ratioDataConName
687 plusInteger_RDR = nameRdrName plusIntegerName
688 timesInteger_RDR = nameRdrName timesIntegerName
689 enumClass_RDR = nameRdrName enumClassName
690 monadClass_RDR = nameRdrName monadClassName
691 ioDataCon_RDR = nameRdrName ioDataConName
692 cCallableClass_RDR = nameRdrName cCallableClassName
693 cReturnableClass_RDR = nameRdrName cReturnableClassName
694 eqClass_RDR = nameRdrName eqClassName
695 eqString_RDR = nameRdrName eqStringName
696 unpackCString_RDR = nameRdrName unpackCStringName
697 unpackCStringFoldr_RDR = nameRdrName unpackCStringFoldrName
698 unpackCStringUtf8_RDR = nameRdrName unpackCStringUtf8Name
699 deRefStablePtr_RDR = nameRdrName deRefStablePtrName
700 newStablePtr_RDR = nameRdrName newStablePtrName
701 bindIO_RDR = nameRdrName bindIOName
702 returnIO_RDR = nameRdrName returnIOName
703 fromInteger_RDR = nameRdrName fromIntegerName
704 fromRational_RDR = nameRdrName fromRationalName
705 minus_RDR = nameRdrName minusName
708 %************************************************************************
710 \subsection{Local helpers}
712 %************************************************************************
714 All these are original names; hence mkOrig
717 varQual mod str uq = mkKnownKeyExternalName (varQual_RDR mod str) uq
718 dataQual mod str uq = mkKnownKeyExternalName (dataQual_RDR mod str) uq
719 tcQual mod str uq = mkKnownKeyExternalName (tcQual_RDR mod str) uq
720 clsQual mod str uq = mkKnownKeyExternalName (clsQual_RDR mod str) uq
722 kindQual str uq = mkInternalName uq (mkKindOccFS tcName str) builtinSrcLoc
723 -- Kinds are not z-encoded in interface file, hence mkKindOccFS
724 -- And they don't come from any particular module; indeed we always
725 -- want to print them unqualified. Hence the LocalName
727 varQual_RDR mod str = mkOrig varName mod str
728 tcQual_RDR mod str = mkOrig tcName mod str
729 clsQual_RDR mod str = mkOrig clsName mod str
730 dataQual_RDR mod str = mkOrig dataName mod str
733 %************************************************************************
735 \subsubsection[Uniques-prelude-Classes]{@Uniques@ for wired-in @Classes@}
737 %************************************************************************
740 boundedClassKey = mkPreludeClassUnique 1
741 enumClassKey = mkPreludeClassUnique 2
742 eqClassKey = mkPreludeClassUnique 3
743 floatingClassKey = mkPreludeClassUnique 5
744 fractionalClassKey = mkPreludeClassUnique 6
745 integralClassKey = mkPreludeClassUnique 7
746 monadClassKey = mkPreludeClassUnique 8
747 functorClassKey = mkPreludeClassUnique 10
748 numClassKey = mkPreludeClassUnique 11
749 ordClassKey = mkPreludeClassUnique 12
750 readClassKey = mkPreludeClassUnique 13
751 realClassKey = mkPreludeClassUnique 14
752 realFloatClassKey = mkPreludeClassUnique 15
753 realFracClassKey = mkPreludeClassUnique 16
754 showClassKey = mkPreludeClassUnique 17
756 cCallableClassKey = mkPreludeClassUnique 18
757 cReturnableClassKey = mkPreludeClassUnique 19
759 ixClassKey = mkPreludeClassUnique 20
762 %************************************************************************
764 \subsubsection[Uniques-prelude-TyCons]{@Uniques@ for wired-in @TyCons@}
766 %************************************************************************
769 addrPrimTyConKey = mkPreludeTyConUnique 1
770 addrTyConKey = mkPreludeTyConUnique 2
771 arrayPrimTyConKey = mkPreludeTyConUnique 3
772 boolTyConKey = mkPreludeTyConUnique 4
773 byteArrayPrimTyConKey = mkPreludeTyConUnique 5
774 charPrimTyConKey = mkPreludeTyConUnique 7
775 charTyConKey = mkPreludeTyConUnique 8
776 doublePrimTyConKey = mkPreludeTyConUnique 9
777 doubleTyConKey = mkPreludeTyConUnique 10
778 floatPrimTyConKey = mkPreludeTyConUnique 11
779 floatTyConKey = mkPreludeTyConUnique 12
780 funTyConKey = mkPreludeTyConUnique 13
781 intPrimTyConKey = mkPreludeTyConUnique 14
782 intTyConKey = mkPreludeTyConUnique 15
783 int8TyConKey = mkPreludeTyConUnique 16
784 int16TyConKey = mkPreludeTyConUnique 17
785 int32PrimTyConKey = mkPreludeTyConUnique 18
786 int32TyConKey = mkPreludeTyConUnique 19
787 int64PrimTyConKey = mkPreludeTyConUnique 20
788 int64TyConKey = mkPreludeTyConUnique 21
789 integerTyConKey = mkPreludeTyConUnique 22
790 listTyConKey = mkPreludeTyConUnique 23
791 foreignObjPrimTyConKey = mkPreludeTyConUnique 24
792 foreignObjTyConKey = mkPreludeTyConUnique 25
793 foreignPtrTyConKey = mkPreludeTyConUnique 26
794 weakPrimTyConKey = mkPreludeTyConUnique 27
795 mutableArrayPrimTyConKey = mkPreludeTyConUnique 28
796 mutableByteArrayPrimTyConKey = mkPreludeTyConUnique 29
797 orderingTyConKey = mkPreludeTyConUnique 30
798 mVarPrimTyConKey = mkPreludeTyConUnique 31
799 ratioTyConKey = mkPreludeTyConUnique 32
800 rationalTyConKey = mkPreludeTyConUnique 33
801 realWorldTyConKey = mkPreludeTyConUnique 34
802 stablePtrPrimTyConKey = mkPreludeTyConUnique 35
803 stablePtrTyConKey = mkPreludeTyConUnique 36
804 statePrimTyConKey = mkPreludeTyConUnique 50
805 stableNamePrimTyConKey = mkPreludeTyConUnique 51
806 stableNameTyConKey = mkPreludeTyConUnique 52
807 mutableByteArrayTyConKey = mkPreludeTyConUnique 53
808 mutVarPrimTyConKey = mkPreludeTyConUnique 55
809 ioTyConKey = mkPreludeTyConUnique 56
810 byteArrayTyConKey = mkPreludeTyConUnique 57
811 wordPrimTyConKey = mkPreludeTyConUnique 58
812 wordTyConKey = mkPreludeTyConUnique 59
813 word8TyConKey = mkPreludeTyConUnique 60
814 word16TyConKey = mkPreludeTyConUnique 61
815 word32PrimTyConKey = mkPreludeTyConUnique 62
816 word32TyConKey = mkPreludeTyConUnique 63
817 word64PrimTyConKey = mkPreludeTyConUnique 64
818 word64TyConKey = mkPreludeTyConUnique 65
819 liftedConKey = mkPreludeTyConUnique 66
820 unliftedConKey = mkPreludeTyConUnique 67
821 anyBoxConKey = mkPreludeTyConUnique 68
822 kindConKey = mkPreludeTyConUnique 69
823 boxityConKey = mkPreludeTyConUnique 70
824 typeConKey = mkPreludeTyConUnique 71
825 threadIdPrimTyConKey = mkPreludeTyConUnique 72
826 bcoPrimTyConKey = mkPreludeTyConUnique 73
827 ptrTyConKey = mkPreludeTyConUnique 74
828 funPtrTyConKey = mkPreludeTyConUnique 75
830 -- Usage type constructors
831 usageConKey = mkPreludeTyConUnique 76
832 usOnceTyConKey = mkPreludeTyConUnique 77
833 usManyTyConKey = mkPreludeTyConUnique 78
835 -- Generic Type Constructors
836 crossTyConKey = mkPreludeTyConUnique 79
837 plusTyConKey = mkPreludeTyConUnique 80
838 genUnitTyConKey = mkPreludeTyConUnique 81
840 -- Parallel array type constructor
841 parrTyConKey = mkPreludeTyConUnique 82
843 unitTyConKey = mkTupleTyConUnique Boxed 0
846 %************************************************************************
848 \subsubsection[Uniques-prelude-DataCons]{@Uniques@ for wired-in @DataCons@}
850 %************************************************************************
853 addrDataConKey = mkPreludeDataConUnique 0
854 charDataConKey = mkPreludeDataConUnique 1
855 consDataConKey = mkPreludeDataConUnique 2
856 doubleDataConKey = mkPreludeDataConUnique 3
857 falseDataConKey = mkPreludeDataConUnique 4
858 floatDataConKey = mkPreludeDataConUnique 5
859 intDataConKey = mkPreludeDataConUnique 6
860 smallIntegerDataConKey = mkPreludeDataConUnique 7
861 largeIntegerDataConKey = mkPreludeDataConUnique 8
862 foreignObjDataConKey = mkPreludeDataConUnique 9
863 foreignPtrDataConKey = mkPreludeDataConUnique 10
864 nilDataConKey = mkPreludeDataConUnique 11
865 ratioDataConKey = mkPreludeDataConUnique 12
866 stablePtrDataConKey = mkPreludeDataConUnique 13
867 stableNameDataConKey = mkPreludeDataConUnique 14
868 trueDataConKey = mkPreludeDataConUnique 15
869 wordDataConKey = mkPreludeDataConUnique 16
870 ioDataConKey = mkPreludeDataConUnique 17
871 ptrDataConKey = mkPreludeDataConUnique 18
872 funPtrDataConKey = mkPreludeDataConUnique 19
874 -- Generic data constructors
875 crossDataConKey = mkPreludeDataConUnique 20
876 inlDataConKey = mkPreludeDataConUnique 21
877 inrDataConKey = mkPreludeDataConUnique 22
878 genUnitDataConKey = mkPreludeDataConUnique 23
880 -- Data constructor for parallel arrays
881 parrDataConKey = mkPreludeDataConUnique 24
884 %************************************************************************
886 \subsubsection[Uniques-prelude-Ids]{@Uniques@ for wired-in @Ids@ (except @DataCons@)}
888 %************************************************************************
891 absentErrorIdKey = mkPreludeMiscIdUnique 1
892 appendIdKey = mkPreludeMiscIdUnique 2
893 augmentIdKey = mkPreludeMiscIdUnique 3
894 buildIdKey = mkPreludeMiscIdUnique 4
895 errorIdKey = mkPreludeMiscIdUnique 5
896 foldlIdKey = mkPreludeMiscIdUnique 6
897 foldrIdKey = mkPreludeMiscIdUnique 7
898 recSelErrIdKey = mkPreludeMiscIdUnique 8
899 integerMinusOneIdKey = mkPreludeMiscIdUnique 9
900 integerPlusOneIdKey = mkPreludeMiscIdUnique 10
901 integerPlusTwoIdKey = mkPreludeMiscIdUnique 11
902 integerZeroIdKey = mkPreludeMiscIdUnique 12
903 int2IntegerIdKey = mkPreludeMiscIdUnique 13
904 seqIdKey = mkPreludeMiscIdUnique 14
905 irrefutPatErrorIdKey = mkPreludeMiscIdUnique 15
906 eqStringIdKey = mkPreludeMiscIdUnique 16
907 noMethodBindingErrorIdKey = mkPreludeMiscIdUnique 17
908 nonExhaustiveGuardsErrorIdKey = mkPreludeMiscIdUnique 18
909 runtimeErrorIdKey = mkPreludeMiscIdUnique 19
910 parErrorIdKey = mkPreludeMiscIdUnique 20
911 parIdKey = mkPreludeMiscIdUnique 21
912 patErrorIdKey = mkPreludeMiscIdUnique 22
913 realWorldPrimIdKey = mkPreludeMiscIdUnique 23
914 recConErrorIdKey = mkPreludeMiscIdUnique 24
915 recUpdErrorIdKey = mkPreludeMiscIdUnique 25
916 traceIdKey = mkPreludeMiscIdUnique 26
917 unpackCStringUtf8IdKey = mkPreludeMiscIdUnique 27
918 unpackCStringAppendIdKey = mkPreludeMiscIdUnique 28
919 unpackCStringFoldrIdKey = mkPreludeMiscIdUnique 29
920 unpackCStringIdKey = mkPreludeMiscIdUnique 30
921 ushowListIdKey = mkPreludeMiscIdUnique 31
922 unsafeCoerceIdKey = mkPreludeMiscIdUnique 32
923 concatIdKey = mkPreludeMiscIdUnique 33
924 filterIdKey = mkPreludeMiscIdUnique 34
925 zipIdKey = mkPreludeMiscIdUnique 35
926 bindIOIdKey = mkPreludeMiscIdUnique 36
927 returnIOIdKey = mkPreludeMiscIdUnique 37
928 deRefStablePtrIdKey = mkPreludeMiscIdUnique 38
929 newStablePtrIdKey = mkPreludeMiscIdUnique 39
930 getTagIdKey = mkPreludeMiscIdUnique 40
931 plusIntegerIdKey = mkPreludeMiscIdUnique 41
932 timesIntegerIdKey = mkPreludeMiscIdUnique 42
933 printIdKey = mkPreludeMiscIdUnique 43
934 failIOIdKey = mkPreludeMiscIdUnique 44
935 nullAddrIdKey = mkPreludeMiscIdUnique 46
936 voidArgIdKey = mkPreludeMiscIdUnique 47
937 splitIdKey = mkPreludeMiscIdUnique 48
938 fstIdKey = mkPreludeMiscIdUnique 49
939 sndIdKey = mkPreludeMiscIdUnique 50
940 otherwiseIdKey = mkPreludeMiscIdUnique 51
941 mapIdKey = mkPreludeMiscIdUnique 52
942 assertIdKey = mkPreludeMiscIdUnique 53
943 runSTRepIdKey = mkPreludeMiscIdUnique 54
945 dollarMainKey = mkPreludeMiscIdUnique 55
946 runMainKey = mkPreludeMiscIdUnique 56
948 andIdKey = mkPreludeMiscIdUnique 57
949 orIdKey = mkPreludeMiscIdUnique 58
950 thenIOIdKey = mkPreludeMiscIdUnique 59
952 -- Parallel array functions
953 nullPIdKey = mkPreludeMiscIdUnique 70
954 lengthPIdKey = mkPreludeMiscIdUnique 71
955 replicatePIdKey = mkPreludeMiscIdUnique 72
956 mapPIdKey = mkPreludeMiscIdUnique 73
957 filterPIdKey = mkPreludeMiscIdUnique 74
958 zipPIdKey = mkPreludeMiscIdUnique 75
959 crossPIdKey = mkPreludeMiscIdUnique 76
960 indexPIdKey = mkPreludeMiscIdUnique 77
961 toPIdKey = mkPreludeMiscIdUnique 78
962 enumFromToPIdKey = mkPreludeMiscIdUnique 79
963 enumFromThenToPIdKey = mkPreludeMiscIdUnique 80
964 bpermutePIdKey = mkPreludeMiscIdUnique 81
965 bpermuteDftPIdKey = mkPreludeMiscIdUnique 82
966 indexOfPIdKey = mkPreludeMiscIdUnique 83
969 Certain class operations from Prelude classes. They get their own
970 uniques so we can look them up easily when we want to conjure them up
971 during type checking.
974 -- Just a place holder for unbound variables produced by the renamer:
975 unboundKey = mkPreludeMiscIdUnique 101
976 fromIntegerClassOpKey = mkPreludeMiscIdUnique 102
977 minusClassOpKey = mkPreludeMiscIdUnique 103
978 fromRationalClassOpKey = mkPreludeMiscIdUnique 104
979 enumFromClassOpKey = mkPreludeMiscIdUnique 105
980 enumFromThenClassOpKey = mkPreludeMiscIdUnique 106
981 enumFromToClassOpKey = mkPreludeMiscIdUnique 107
982 enumFromThenToClassOpKey = mkPreludeMiscIdUnique 108
983 eqClassOpKey = mkPreludeMiscIdUnique 109
984 geClassOpKey = mkPreludeMiscIdUnique 110
985 negateClassOpKey = mkPreludeMiscIdUnique 111
986 failMClassOpKey = mkPreludeMiscIdUnique 112
987 bindMClassOpKey = mkPreludeMiscIdUnique 113 -- (>>=)
988 thenMClassOpKey = mkPreludeMiscIdUnique 114 -- (>>)
989 fromEnumClassOpKey = mkPreludeMiscIdUnique 115
990 returnMClassOpKey = mkPreludeMiscIdUnique 117
991 toEnumClassOpKey = mkPreludeMiscIdUnique 119
995 %************************************************************************
997 \subsection{Standard groups of types}
999 %************************************************************************
1011 -- Renamer always imports these data decls replete with constructors
1012 -- so that desugarer can always see their constructors. Ugh!
1017 , mutableByteArrayTyConKey
1018 , foreignObjTyConKey
1019 , foreignPtrTyConKey
1033 %************************************************************************
1035 \subsection[Class-std-groups]{Standard groups of Prelude classes}
1037 %************************************************************************
1039 @derivableClassKeys@ is also used in checking \tr{deriving} constructs
1042 @derivingOccurrences@ maps a class name to a list of the (qualified)
1043 occurrences that will be mentioned by the derived code for the class
1044 when it is later generated. We don't need to put in things that are
1045 WiredIn (because they are already mapped to their correct name by the
1046 @NameSupply@. The class itself, and all its class ops, is already
1047 flagged as an occurrence so we don't need to mention that either.
1049 @derivingOccurrences@ has an item for every derivable class, even if
1050 that item is empty, because we treat lookup failure as indicating that
1051 the class is illegal in a deriving clause.
1054 derivingOccurrences :: UniqFM [RdrName]
1055 derivingOccurrences = listToUFM deriving_occ_info
1057 derivableClassKeys = map fst deriving_occ_info
1060 = [ (eqClassKey, [intTyCon_RDR, and_RDR, not_RDR])
1061 , (ordClassKey, [intTyCon_RDR, compose_RDR, eqTag_RDR, error_RDR])
1062 -- EQ (from Ordering) is needed to force in the constructors
1063 -- as well as the type constructor.
1064 , (enumClassKey, [intTyCon_RDR, eq_RDR, ge_RDR, and_RDR, map_RDR, plus_RDR,
1065 error_RDR, showsPrec_RDR, append_RDR])
1066 -- The last two Enum deps are only used to produce better
1067 -- error msgs for derived toEnum methods.
1068 , (boundedClassKey, [intTyCon_RDR])
1069 , (showClassKey, [intTyCon_RDR, numClass_RDR, ordClass_RDR, compose_RDR, showString_RDR,
1070 showParen_RDR, showSpace_RDR, showList___RDR])
1071 , (readClassKey, [intTyCon_RDR, numClass_RDR, ordClass_RDR,
1072 lexP_RDR, readPrec_RDR,
1073 readListDefault_RDR, readListPrecDefault_RDR,
1074 step_RDR, parens_RDR, reset_RDR, prec_RDR, alt_RDR, choose_RDR,
1075 ident_RDR, -- Pulls in the entire Lex.Lexeme data type
1076 bindM_RDR -- Pulls in the entire Monad class decl
1078 , (ixClassKey, [intTyCon_RDR, numClass_RDR, and_RDR, map_RDR, enumFromTo_RDR, error_RDR,
1079 foldr_RDR, build_RDR,
1080 -- foldr and build required for list comprehension used
1081 -- with single constructor types -- KSW 2000-06
1082 returnM_RDR, failM_RDR])
1083 -- the last two are needed to force returnM, thenM and failM
1084 -- in before typechecking the list(monad) comprehension
1085 -- generated for derived Ix instances (range method)
1086 -- of single constructor types. -- SOF 8/97
1088 -- intTyCon: Practically any deriving needs Int, either for index calculations,
1090 -- ordClass: really it's the methods that are actually used.
1091 -- numClass: for Int literals
1095 NOTE: @Eq@ and @Text@ do need to appear in @standardClasses@
1096 even though every numeric class has these two as a superclass,
1097 because the list of ambiguous dictionaries hasn't been simplified.
1105 ++ fractionalClassKeys
1107 fractionalClassKeys =
1108 [ fractionalClassKey
1114 -- the strictness analyser needs to know about numeric types
1115 -- (see SaAbsInt.lhs)
1116 needsDataDeclCtxtClassKeys = -- see comments in TcDeriv
1122 , cReturnableClassKey
1126 = derivableClassKeys ++ numericClassKeys ++ cCallishClassKeys
1128 -- We have to have "CCallable" and "CReturnable" in the standard
1129 -- classes, so that if you go...
1131 -- _ccall_ foo ... 93{-numeric literal-} ...
1133 -- ... it can do The Right Thing on the 93.
1135 noDictClassKeys -- These classes are used only for type annotations;
1136 -- they are not implemented by dictionaries, ever.