2 % (c) The GRASP/AQUA Project, Glasgow University, 1992-1998
4 \section[PrelNames]{Definitions of prelude modules and names}
7 Nota Bene: all Names defined in here should come from the base package
9 - ModuleNames for prelude modules,
10 e.g. pREL_BASE_Name :: ModuleName
12 - Modules for prelude modules
13 e.g. pREL_Base :: Module
15 - Uniques for Ids, DataCons, TyCons and Classes that the compiler
16 "knows about" in some way
17 e.g. intTyConKey :: Unique
18 minusClassOpKey :: Unique
20 - Names for Ids, DataCons, TyCons and Classes that the compiler
21 "knows about" in some way
22 e.g. intTyConName :: Name
24 One of these Names contains
25 (a) the module and occurrence name of the thing
27 The may way the compiler "knows about" one of these things is
28 where the type checker or desugarer needs to look it up. For
29 example, when desugaring list comprehensions the desugarer
30 needs to conjure up 'foldr'. It does this by looking up
31 foldrName in the environment.
33 - RdrNames for Ids, DataCons etc that the compiler may emit into
34 generated code (e.g. for deriving). It's not necessary to know
35 the uniques for these guys, only their names
40 Unique, Uniquable(..), hasKey, -- Re-exported for convenience
42 -----------------------------------------------------------
43 module PrelNames, -- A huge bunch of (a) Names, e.g. intTyConName
44 -- (b) Uniques e.g. intTyConKey
45 -- (c) Groups of classes and types
46 -- (d) miscellaneous things
47 -- So many that we export them all
50 #include "HsVersions.h"
54 import RdrName ( RdrName, nameRdrName, mkOrig, rdrNameOcc, mkUnqual )
55 import Unique ( Unique, Uniquable(..), hasKey,
56 mkPreludeMiscIdUnique, mkPreludeDataConUnique,
57 mkPreludeTyConUnique, mkPreludeClassUnique,
60 import BasicTypes ( Boxity(..), Arity )
61 import Name ( Name, mkInternalName, mkExternalName, mkSystemVarName )
67 %************************************************************************
69 \subsection{Local Names}
71 %************************************************************************
73 This *local* name is used by the interactive stuff
76 itName :: Unique -> Name
77 itName uniq = mkInternalName uniq (mkOccNameFS varName (fsLit "it")) noSrcSpan
81 -- mkUnboundName makes a place-holder Name; it shouldn't be looked at except possibly
82 -- during compiler debugging.
83 mkUnboundName :: RdrName -> Name
84 mkUnboundName rdr_name = mkInternalName unboundKey (rdrNameOcc rdr_name) noSrcSpan
86 isUnboundName :: Name -> Bool
87 isUnboundName name = name `hasKey` unboundKey
91 %************************************************************************
93 \subsection{Known key Names}
95 %************************************************************************
97 This section tells what the compiler knows about the association of
98 names with uniques. These ones are the *non* wired-in ones. The
99 wired in ones are defined in TysWiredIn etc.
101 The names for DPH can come from one of multiple backend packages. At the point where
102 'basicKnownKeyNames' is used, we don't know which backend it will be. Hence, we list
103 the names for multiple backends. That works out fine, although they use the same uniques,
104 as we are guaranteed to only load one backend; hence, only one of the different names
105 sharing a unique will be used.
108 basicKnownKeyNames :: [Name]
111 ++ typeableClassNames
112 ++ dphKnownKeyNames dphSeqPackageId ++ dphKnownKeyNames dphParPackageId
113 ++ [ -- Type constructors (synonyms especially)
114 ioTyConName, ioDataConName,
121 integerTyConName, smallIntegerName,
123 -- Classes. *Must* include:
124 -- classes that are grabbed by key (e.g., eqClassKey)
125 -- classes in "Class.standardClassKeys" (quite a few)
126 eqClassName, -- mentioned, derivable
127 ordClassName, -- derivable
128 boundedClassName, -- derivable
129 numClassName, -- mentioned, numeric
130 enumClassName, -- derivable
133 realClassName, -- numeric
134 integralClassName, -- numeric
135 fractionalClassName, -- numeric
136 floatingClassName, -- numeric
137 realFracClassName, -- numeric
138 realFloatClassName, -- numeric
141 applicativeClassName,
143 traversableClassName,
146 negateName, minusName, geName, eqName,
148 -- Conversion functions
149 fromRationalName, fromIntegerName,
150 toIntegerName, toRationalName,
151 fromIntegralName, realToFracName,
157 enumFromName, enumFromThenName,
158 enumFromThenToName, enumFromToName,
161 thenIOName, bindIOName, returnIOName, failIOName,
162 failMName, bindMName, thenMName, returnMName,
169 arrAName, composeAName, firstAName,
170 appAName, choiceAName, loopAName,
188 unpackCStringName, unpackCStringAppendName,
189 unpackCStringFoldrName, unpackCStringUtf8Name,
192 concatName, filterName, mapName,
193 zipName, foldrName, buildName, augmentName, appendName,
195 dollarName, -- The ($) apply function
197 -- FFI primitive types that are not wired-in.
198 stablePtrTyConName, ptrTyConName, funPtrTyConName,
199 int8TyConName, int16TyConName, int32TyConName, int64TyConName,
200 wordTyConName, word8TyConName, word16TyConName, word32TyConName, word64TyConName,
203 otherwiseIdName, inlineIdName,
204 plusIntegerName, timesIntegerName,
205 eqStringName, assertName, breakpointName, breakpointCondName,
206 breakpointAutoName, opaqueTyConName,
207 assertErrorName, runSTRepName,
208 printName, fstName, sndName,
211 monadFixClassName, mfixName,
214 randomClassName, randomGenClassName, monadPlusClassName,
217 hetmet_brak_name, hetmet_esc_name, hetmet_csp_name, hetmet_flatten_name, hetmet_unflatten_name, hetmet_flattened_id_name,
218 hetmet_guest_integer_literal_name, hetmet_guest_string_literal_name,
219 hetmet_guest_char_literal_name,
221 hetmet_PGArrow_unit_name,
222 hetmet_PGArrow_tensor_name,
223 hetmet_PGArrow_exponent_name,
225 hetmet_pga_comp_name,
226 hetmet_pga_first_name,
227 hetmet_pga_second_name,
228 hetmet_pga_cancell_name,
229 hetmet_pga_cancelr_name,
230 hetmet_pga_uncancell_name,
231 hetmet_pga_uncancelr_name,
232 hetmet_pga_assoc_name,
233 hetmet_pga_unassoc_name,
234 hetmet_pga_copy_name,
235 hetmet_pga_drop_name,
236 hetmet_pga_swap_name,
237 hetmet_pga_applyl_name,
238 hetmet_pga_applyr_name,
239 hetmet_pga_curryl_name,
240 hetmet_pga_curryr_name,
241 hetmet_pga_loopl_name,
242 hetmet_pga_loopr_name,
244 -- Annotation type checking
245 toAnnotationWrapperName
248 , eitherTyConName, leftDataConName, rightDataConName
251 , objectTyConName, marshalObjectName, unmarshalObjectName
252 , marshalStringName, unmarshalStringName, checkDotnetResName
255 , genClassName, gen1ClassName
256 , datatypeClassName, constructorClassName, selectorClassName
258 -- Monad comprehensions
265 genericTyConNames :: [Name]
266 genericTyConNames = [
267 v1TyConName, u1TyConName, par1TyConName, rec1TyConName,
268 k1TyConName, m1TyConName, sumTyConName, prodTyConName,
269 compTyConName, rTyConName, pTyConName, dTyConName,
270 cTyConName, sTyConName, rec0TyConName, par0TyConName,
271 d1TyConName, c1TyConName, s1TyConName, noSelTyConName,
272 repTyConName, rep1TyConName
275 -- Know names from the DPH package which vary depending on the selected DPH backend.
277 dphKnownKeyNames :: PackageId -> [Name]
278 dphKnownKeyNames dphPkg
281 -- Parallel array operations
282 nullPName, lengthPName, replicatePName, singletonPName, mapPName,
283 filterPName, zipPName, crossMapPName, indexPName,
284 toPName, emptyPName, appPName,
285 enumFromToPName, enumFromThenToPName
291 %************************************************************************
293 \subsection{Module names}
295 %************************************************************************
298 --MetaHaskell Extension Add a new module here
301 pRELUDE = mkBaseModule_ pRELUDE_NAME
303 gHC_PRIM, gHC_TYPES, gHC_UNIT, gHC_ORDERING, gHC_GENERICS,
305 gHC_CLASSES, gHC_BASE, gHC_ENUM, gHC_CSTRING,
306 gHC_SHOW, gHC_READ, gHC_NUM, gHC_INTEGER, gHC_INTEGER_TYPE, gHC_LIST,
307 gHC_HETMET_CODETYPES,
310 gHC_TUPLE, dATA_TUPLE, dATA_EITHER, dATA_STRING, dATA_FOLDABLE, dATA_TRAVERSABLE,
311 gHC_PACK, gHC_CONC, gHC_IO, gHC_IO_Exception,
312 gHC_ST, gHC_ARR, gHC_STABLE, gHC_ADDR, gHC_PTR, gHC_ERR, gHC_REAL,
313 gHC_FLOAT, gHC_TOP_HANDLER, sYSTEM_IO, dYNAMIC, tYPEABLE, gENERICS,
314 dOTNET, rEAD_PREC, lEX, gHC_INT, gHC_WORD, mONAD, mONAD_FIX, mONAD_GROUP, mONAD_ZIP,
315 aRROW, cONTROL_APPLICATIVE, gHC_DESUGAR, rANDOM, gHC_EXTS,
316 cONTROL_EXCEPTION_BASE :: Module
318 gHC_PRIM = mkPrimModule (fsLit "GHC.Prim") -- Primitive types and values
319 gHC_TYPES = mkPrimModule (fsLit "GHC.Types")
320 gHC_UNIT = mkPrimModule (fsLit "GHC.Unit")
321 gHC_ORDERING = mkPrimModule (fsLit "GHC.Ordering")
322 gHC_GENERICS = mkPrimModule (fsLit "GHC.Generics")
323 gHC_MAGIC = mkPrimModule (fsLit "GHC.Magic")
324 gHC_CSTRING = mkPrimModule (fsLit "GHC.CString")
326 gHC_CLASSES = mkBaseModule (fsLit "GHC.Classes")
327 gHC_BASE = mkBaseModule (fsLit "GHC.Base")
328 gHC_ENUM = mkBaseModule (fsLit "GHC.Enum")
329 gHC_SHOW = mkBaseModule (fsLit "GHC.Show")
330 gHC_READ = mkBaseModule (fsLit "GHC.Read")
331 gHC_NUM = mkBaseModule (fsLit "GHC.Num")
332 gHC_INTEGER = mkIntegerModule (fsLit "GHC.Integer")
333 gHC_INTEGER_TYPE= mkIntegerModule (fsLit "GHC.Integer.Type")
334 gHC_HETMET_CODETYPES = mkBaseModule (fsLit "GHC.HetMet.CodeTypes")
335 gHC_HETMET_PRIVATE = mkBaseModule (fsLit "GHC.HetMet.Private")
336 gHC_HETMET_GARROW = mkBaseModule (fsLit "GHC.HetMet.GArrow")
337 gHC_LIST = mkBaseModule (fsLit "GHC.List")
338 gHC_TUPLE = mkPrimModule (fsLit "GHC.Tuple")
339 dATA_TUPLE = mkBaseModule (fsLit "Data.Tuple")
340 dATA_EITHER = mkBaseModule (fsLit "Data.Either")
341 dATA_STRING = mkBaseModule (fsLit "Data.String")
342 dATA_FOLDABLE = mkBaseModule (fsLit "Data.Foldable")
343 dATA_TRAVERSABLE= mkBaseModule (fsLit "Data.Traversable")
344 gHC_PACK = mkBaseModule (fsLit "GHC.Pack")
345 gHC_CONC = mkBaseModule (fsLit "GHC.Conc")
346 gHC_IO = mkBaseModule (fsLit "GHC.IO")
347 gHC_IO_Exception = mkBaseModule (fsLit "GHC.IO.Exception")
348 gHC_ST = mkBaseModule (fsLit "GHC.ST")
349 gHC_ARR = mkBaseModule (fsLit "GHC.Arr")
350 gHC_STABLE = mkBaseModule (fsLit "GHC.Stable")
351 gHC_ADDR = mkBaseModule (fsLit "GHC.Addr")
352 gHC_PTR = mkBaseModule (fsLit "GHC.Ptr")
353 gHC_ERR = mkBaseModule (fsLit "GHC.Err")
354 gHC_REAL = mkBaseModule (fsLit "GHC.Real")
355 gHC_FLOAT = mkBaseModule (fsLit "GHC.Float")
356 gHC_TOP_HANDLER = mkBaseModule (fsLit "GHC.TopHandler")
357 sYSTEM_IO = mkBaseModule (fsLit "System.IO")
358 dYNAMIC = mkBaseModule (fsLit "Data.Dynamic")
359 tYPEABLE = mkBaseModule (fsLit "Data.Typeable")
360 gENERICS = mkBaseModule (fsLit "Data.Data")
361 dOTNET = mkBaseModule (fsLit "GHC.Dotnet")
362 rEAD_PREC = mkBaseModule (fsLit "Text.ParserCombinators.ReadPrec")
363 lEX = mkBaseModule (fsLit "Text.Read.Lex")
364 gHC_INT = mkBaseModule (fsLit "GHC.Int")
365 gHC_WORD = mkBaseModule (fsLit "GHC.Word")
366 mONAD = mkBaseModule (fsLit "Control.Monad")
367 mONAD_FIX = mkBaseModule (fsLit "Control.Monad.Fix")
368 mONAD_GROUP = mkBaseModule (fsLit "Control.Monad.Group")
369 mONAD_ZIP = mkBaseModule (fsLit "Control.Monad.Zip")
370 aRROW = mkBaseModule (fsLit "Control.Arrow")
371 cONTROL_APPLICATIVE = mkBaseModule (fsLit "Control.Applicative")
372 gHC_DESUGAR = mkBaseModule (fsLit "GHC.Desugar")
373 rANDOM = mkBaseModule (fsLit "System.Random")
374 gHC_EXTS = mkBaseModule (fsLit "GHC.Exts")
375 cONTROL_EXCEPTION_BASE = mkBaseModule (fsLit "Control.Exception.Base")
377 gHC_PARR :: PackageId -> Module
378 gHC_PARR pkg = mkModule pkg (mkModuleNameFS (fsLit "Data.Array.Parallel"))
381 gHC_PARR' = mkBaseModule (fsLit "GHC.PArr")
383 mAIN, rOOT_MAIN :: Module
384 mAIN = mkMainModule_ mAIN_NAME
385 rOOT_MAIN = mkMainModule (fsLit ":Main") -- Root module for initialisation
387 -- The ':xxx' makes a module name that the user can never
388 -- use himself. The z-encoding for ':' is "ZC", so the z-encoded
389 -- module name still starts with a capital letter, which keeps
390 -- the z-encoded version consistent.
391 iNTERACTIVE :: Module
392 iNTERACTIVE = mkMainModule (fsLit ":Interactive")
394 pRELUDE_NAME, mAIN_NAME :: ModuleName
395 pRELUDE_NAME = mkModuleNameFS (fsLit "Prelude")
396 mAIN_NAME = mkModuleNameFS (fsLit "Main")
398 mkPrimModule :: FastString -> Module
399 mkPrimModule m = mkModule primPackageId (mkModuleNameFS m)
401 mkIntegerModule :: FastString -> Module
402 mkIntegerModule m = mkModule integerPackageId (mkModuleNameFS m)
404 mkBaseModule :: FastString -> Module
405 mkBaseModule m = mkModule basePackageId (mkModuleNameFS m)
407 mkBaseModule_ :: ModuleName -> Module
408 mkBaseModule_ m = mkModule basePackageId m
410 mkMainModule :: FastString -> Module
411 mkMainModule m = mkModule mainPackageId (mkModuleNameFS m)
413 mkMainModule_ :: ModuleName -> Module
414 mkMainModule_ m = mkModule mainPackageId m
417 %************************************************************************
419 \subsection{Constructing the names of tuples
421 %************************************************************************
424 mkTupleModule :: Boxity -> Arity -> Module
425 mkTupleModule Boxed 0 = gHC_UNIT
426 mkTupleModule Boxed _ = gHC_TUPLE
427 mkTupleModule Unboxed _ = gHC_PRIM
431 %************************************************************************
435 %************************************************************************
438 main_RDR_Unqual :: RdrName
439 main_RDR_Unqual = mkUnqual varName (fsLit "main")
440 -- We definitely don't want an Orig RdrName, because
441 -- main might, in principle, be imported into module Main
443 forall_tv_RDR, dot_tv_RDR :: RdrName
444 forall_tv_RDR = mkUnqual tvName (fsLit "forall")
445 dot_tv_RDR = mkUnqual tvName (fsLit ".")
447 eq_RDR, ge_RDR, ne_RDR, le_RDR, lt_RDR, gt_RDR, compare_RDR,
448 ltTag_RDR, eqTag_RDR, gtTag_RDR :: RdrName
449 eq_RDR = nameRdrName eqName
450 ge_RDR = nameRdrName geName
451 ne_RDR = varQual_RDR gHC_CLASSES (fsLit "/=")
452 le_RDR = varQual_RDR gHC_CLASSES (fsLit "<=")
453 lt_RDR = varQual_RDR gHC_CLASSES (fsLit "<")
454 gt_RDR = varQual_RDR gHC_CLASSES (fsLit ">")
455 compare_RDR = varQual_RDR gHC_CLASSES (fsLit "compare")
456 ltTag_RDR = dataQual_RDR gHC_ORDERING (fsLit "LT")
457 eqTag_RDR = dataQual_RDR gHC_ORDERING (fsLit "EQ")
458 gtTag_RDR = dataQual_RDR gHC_ORDERING (fsLit "GT")
460 eqClass_RDR, numClass_RDR, ordClass_RDR, enumClass_RDR, monadClass_RDR
462 eqClass_RDR = nameRdrName eqClassName
463 numClass_RDR = nameRdrName numClassName
464 ordClass_RDR = nameRdrName ordClassName
465 enumClass_RDR = nameRdrName enumClassName
466 monadClass_RDR = nameRdrName monadClassName
468 map_RDR, append_RDR :: RdrName
469 map_RDR = varQual_RDR gHC_BASE (fsLit "map")
470 append_RDR = varQual_RDR gHC_BASE (fsLit "++")
472 foldr_RDR, build_RDR, returnM_RDR, bindM_RDR, failM_RDR :: RdrName
473 foldr_RDR = nameRdrName foldrName
474 build_RDR = nameRdrName buildName
475 returnM_RDR = nameRdrName returnMName
476 bindM_RDR = nameRdrName bindMName
477 failM_RDR = nameRdrName failMName
479 left_RDR, right_RDR :: RdrName
480 left_RDR = nameRdrName leftDataConName
481 right_RDR = nameRdrName rightDataConName
483 fromEnum_RDR, toEnum_RDR :: RdrName
484 fromEnum_RDR = varQual_RDR gHC_ENUM (fsLit "fromEnum")
485 toEnum_RDR = varQual_RDR gHC_ENUM (fsLit "toEnum")
487 enumFrom_RDR, enumFromTo_RDR, enumFromThen_RDR, enumFromThenTo_RDR :: RdrName
488 enumFrom_RDR = nameRdrName enumFromName
489 enumFromTo_RDR = nameRdrName enumFromToName
490 enumFromThen_RDR = nameRdrName enumFromThenName
491 enumFromThenTo_RDR = nameRdrName enumFromThenToName
493 ratioDataCon_RDR, plusInteger_RDR, timesInteger_RDR :: RdrName
494 ratioDataCon_RDR = nameRdrName ratioDataConName
495 plusInteger_RDR = nameRdrName plusIntegerName
496 timesInteger_RDR = nameRdrName timesIntegerName
498 ioDataCon_RDR :: RdrName
499 ioDataCon_RDR = nameRdrName ioDataConName
501 eqString_RDR, unpackCString_RDR, unpackCStringFoldr_RDR,
502 unpackCStringUtf8_RDR :: RdrName
503 eqString_RDR = nameRdrName eqStringName
504 unpackCString_RDR = nameRdrName unpackCStringName
505 unpackCStringFoldr_RDR = nameRdrName unpackCStringFoldrName
506 unpackCStringUtf8_RDR = nameRdrName unpackCStringUtf8Name
508 newStablePtr_RDR, wordDataCon_RDR :: RdrName
509 newStablePtr_RDR = nameRdrName newStablePtrName
510 wordDataCon_RDR = dataQual_RDR gHC_WORD (fsLit "W#")
512 bindIO_RDR, returnIO_RDR :: RdrName
513 bindIO_RDR = nameRdrName bindIOName
514 returnIO_RDR = nameRdrName returnIOName
516 fromInteger_RDR, fromRational_RDR, minus_RDR, times_RDR, plus_RDR :: RdrName
517 fromInteger_RDR = nameRdrName fromIntegerName
518 fromRational_RDR = nameRdrName fromRationalName
519 minus_RDR = nameRdrName minusName
520 times_RDR = varQual_RDR gHC_NUM (fsLit "*")
521 plus_RDR = varQual_RDR gHC_NUM (fsLit "+")
523 fromString_RDR :: RdrName
524 fromString_RDR = nameRdrName fromStringName
526 compose_RDR :: RdrName
527 compose_RDR = varQual_RDR gHC_BASE (fsLit ".")
529 not_RDR, getTag_RDR, succ_RDR, pred_RDR, minBound_RDR, maxBound_RDR,
530 and_RDR, range_RDR, inRange_RDR, index_RDR,
531 unsafeIndex_RDR, unsafeRangeSize_RDR :: RdrName
532 and_RDR = varQual_RDR gHC_CLASSES (fsLit "&&")
533 not_RDR = varQual_RDR gHC_CLASSES (fsLit "not")
534 getTag_RDR = varQual_RDR gHC_BASE (fsLit "getTag")
535 succ_RDR = varQual_RDR gHC_ENUM (fsLit "succ")
536 pred_RDR = varQual_RDR gHC_ENUM (fsLit "pred")
537 minBound_RDR = varQual_RDR gHC_ENUM (fsLit "minBound")
538 maxBound_RDR = varQual_RDR gHC_ENUM (fsLit "maxBound")
539 range_RDR = varQual_RDR gHC_ARR (fsLit "range")
540 inRange_RDR = varQual_RDR gHC_ARR (fsLit "inRange")
541 index_RDR = varQual_RDR gHC_ARR (fsLit "index")
542 unsafeIndex_RDR = varQual_RDR gHC_ARR (fsLit "unsafeIndex")
543 unsafeRangeSize_RDR = varQual_RDR gHC_ARR (fsLit "unsafeRangeSize")
545 readList_RDR, readListDefault_RDR, readListPrec_RDR, readListPrecDefault_RDR,
546 readPrec_RDR, parens_RDR, choose_RDR, lexP_RDR :: RdrName
547 readList_RDR = varQual_RDR gHC_READ (fsLit "readList")
548 readListDefault_RDR = varQual_RDR gHC_READ (fsLit "readListDefault")
549 readListPrec_RDR = varQual_RDR gHC_READ (fsLit "readListPrec")
550 readListPrecDefault_RDR = varQual_RDR gHC_READ (fsLit "readListPrecDefault")
551 readPrec_RDR = varQual_RDR gHC_READ (fsLit "readPrec")
552 parens_RDR = varQual_RDR gHC_READ (fsLit "parens")
553 choose_RDR = varQual_RDR gHC_READ (fsLit "choose")
554 lexP_RDR = varQual_RDR gHC_READ (fsLit "lexP")
556 punc_RDR, ident_RDR, symbol_RDR :: RdrName
557 punc_RDR = dataQual_RDR lEX (fsLit "Punc")
558 ident_RDR = dataQual_RDR lEX (fsLit "Ident")
559 symbol_RDR = dataQual_RDR lEX (fsLit "Symbol")
561 step_RDR, alt_RDR, reset_RDR, prec_RDR :: RdrName
562 step_RDR = varQual_RDR rEAD_PREC (fsLit "step")
563 alt_RDR = varQual_RDR rEAD_PREC (fsLit "+++")
564 reset_RDR = varQual_RDR rEAD_PREC (fsLit "reset")
565 prec_RDR = varQual_RDR rEAD_PREC (fsLit "prec")
567 showList_RDR, showList___RDR, showsPrec_RDR, showString_RDR,
568 showSpace_RDR, showParen_RDR :: RdrName
569 showList_RDR = varQual_RDR gHC_SHOW (fsLit "showList")
570 showList___RDR = varQual_RDR gHC_SHOW (fsLit "showList__")
571 showsPrec_RDR = varQual_RDR gHC_SHOW (fsLit "showsPrec")
572 showString_RDR = varQual_RDR gHC_SHOW (fsLit "showString")
573 showSpace_RDR = varQual_RDR gHC_SHOW (fsLit "showSpace")
574 showParen_RDR = varQual_RDR gHC_SHOW (fsLit "showParen")
576 typeOf_RDR, mkTypeRep_RDR, mkTyConRep_RDR :: RdrName
577 typeOf_RDR = varQual_RDR tYPEABLE (fsLit "typeOf")
578 mkTypeRep_RDR = varQual_RDR tYPEABLE (fsLit "mkTyConApp")
579 mkTyConRep_RDR = varQual_RDR tYPEABLE (fsLit "mkTyCon")
581 undefined_RDR :: RdrName
582 undefined_RDR = varQual_RDR gHC_ERR (fsLit "undefined")
585 error_RDR = varQual_RDR gHC_ERR (fsLit "error")
587 -- Old Generics (constructors and functions)
588 crossDataCon_RDR, inlDataCon_RDR, inrDataCon_RDR, genUnitDataCon_RDR :: RdrName
589 crossDataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit ":*:")
590 inlDataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "Inl")
591 inrDataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "Inr")
592 genUnitDataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "Unit")
594 -- Generics (constructors and functions)
595 u1DataCon_RDR, par1DataCon_RDR, rec1DataCon_RDR,
596 k1DataCon_RDR, m1DataCon_RDR, l1DataCon_RDR, r1DataCon_RDR,
597 prodDataCon_RDR, comp1DataCon_RDR, from_RDR, from1_RDR,
598 to_RDR, to1_RDR, datatypeName_RDR, moduleName_RDR, conName_RDR,
599 conFixity_RDR, conIsRecord_RDR,
600 noArityDataCon_RDR, arityDataCon_RDR, selName_RDR,
601 prefixDataCon_RDR, infixDataCon_RDR, leftAssocDataCon_RDR,
602 rightAssocDataCon_RDR, notAssocDataCon_RDR :: RdrName
604 u1DataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "U1")
605 par1DataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "Par1")
606 rec1DataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "Rec1")
607 k1DataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "K1")
608 m1DataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "M1")
610 l1DataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "L1")
611 r1DataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "R1")
613 prodDataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit ":*:")
614 comp1DataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "Comp1")
616 from_RDR = varQual_RDR gHC_GENERICS (fsLit "from")
617 from1_RDR = varQual_RDR gHC_GENERICS (fsLit "from1")
618 to_RDR = varQual_RDR gHC_GENERICS (fsLit "to")
619 to1_RDR = varQual_RDR gHC_GENERICS (fsLit "to1")
621 datatypeName_RDR = varQual_RDR gHC_GENERICS (fsLit "datatypeName")
622 moduleName_RDR = varQual_RDR gHC_GENERICS (fsLit "moduleName")
623 selName_RDR = varQual_RDR gHC_GENERICS (fsLit "selName")
624 conName_RDR = varQual_RDR gHC_GENERICS (fsLit "conName")
625 conFixity_RDR = varQual_RDR gHC_GENERICS (fsLit "conFixity")
626 conIsRecord_RDR = varQual_RDR gHC_GENERICS (fsLit "conIsRecord")
628 noArityDataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "NoArity")
629 arityDataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "Arity")
630 prefixDataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "Prefix")
631 infixDataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "Infix")
632 leftAssocDataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "LeftAssociative")
633 rightAssocDataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "RightAssociative")
634 notAssocDataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "NotAssociative")
637 fmap_RDR, pure_RDR, ap_RDR, foldable_foldr_RDR, traverse_RDR :: RdrName
638 fmap_RDR = varQual_RDR gHC_BASE (fsLit "fmap")
639 pure_RDR = varQual_RDR cONTROL_APPLICATIVE (fsLit "pure")
640 ap_RDR = varQual_RDR cONTROL_APPLICATIVE (fsLit "<*>")
641 foldable_foldr_RDR = varQual_RDR dATA_FOLDABLE (fsLit "foldr")
642 traverse_RDR = varQual_RDR dATA_TRAVERSABLE (fsLit "traverse")
644 ----------------------
645 varQual_RDR, tcQual_RDR, clsQual_RDR, dataQual_RDR
646 :: Module -> FastString -> RdrName
647 varQual_RDR mod str = mkOrig mod (mkOccNameFS varName str)
648 tcQual_RDR mod str = mkOrig mod (mkOccNameFS tcName str)
649 clsQual_RDR mod str = mkOrig mod (mkOccNameFS clsName str)
650 dataQual_RDR mod str = mkOrig mod (mkOccNameFS dataName str)
653 %************************************************************************
655 \subsection{Known-key names}
657 %************************************************************************
659 Many of these Names are not really "built in", but some parts of the
660 compiler (notably the deriving mechanism) need to mention their names,
661 and it's convenient to write them all down in one place.
663 --MetaHaskell Extension add the constrs and the lower case case
664 -- guys as well (perhaps) e.g. see trueDataConName below
669 wildCardName = mkSystemVarName wildCardKey (fsLit "wild")
671 runMainIOName :: Name
672 runMainIOName = varQual gHC_TOP_HANDLER (fsLit "runMainIO") runMainKey
674 orderingTyConName :: Name
675 orderingTyConName = tcQual gHC_ORDERING (fsLit "Ordering") orderingTyConKey
677 eitherTyConName, leftDataConName, rightDataConName :: Name
678 eitherTyConName = tcQual dATA_EITHER (fsLit "Either") eitherTyConKey
679 leftDataConName = conName dATA_EITHER (fsLit "Left") leftDataConKey
680 rightDataConName = conName dATA_EITHER (fsLit "Right") rightDataConKey
683 v1TyConName, u1TyConName, par1TyConName, rec1TyConName,
684 k1TyConName, m1TyConName, sumTyConName, prodTyConName,
685 compTyConName, rTyConName, pTyConName, dTyConName,
686 cTyConName, sTyConName, rec0TyConName, par0TyConName,
687 d1TyConName, c1TyConName, s1TyConName, noSelTyConName,
688 repTyConName, rep1TyConName :: Name
690 v1TyConName = tcQual gHC_GENERICS (fsLit "V1") v1TyConKey
691 u1TyConName = tcQual gHC_GENERICS (fsLit "U1") u1TyConKey
692 par1TyConName = tcQual gHC_GENERICS (fsLit "Par1") par1TyConKey
693 rec1TyConName = tcQual gHC_GENERICS (fsLit "Rec1") rec1TyConKey
694 k1TyConName = tcQual gHC_GENERICS (fsLit "K1") k1TyConKey
695 m1TyConName = tcQual gHC_GENERICS (fsLit "M1") m1TyConKey
697 sumTyConName = tcQual gHC_GENERICS (fsLit ":+:") sumTyConKey
698 prodTyConName = tcQual gHC_GENERICS (fsLit ":*:") prodTyConKey
699 compTyConName = tcQual gHC_GENERICS (fsLit ":.:") compTyConKey
701 rTyConName = tcQual gHC_GENERICS (fsLit "R") rTyConKey
702 pTyConName = tcQual gHC_GENERICS (fsLit "P") pTyConKey
703 dTyConName = tcQual gHC_GENERICS (fsLit "D") dTyConKey
704 cTyConName = tcQual gHC_GENERICS (fsLit "C") cTyConKey
705 sTyConName = tcQual gHC_GENERICS (fsLit "S") sTyConKey
707 rec0TyConName = tcQual gHC_GENERICS (fsLit "Rec0") rec0TyConKey
708 par0TyConName = tcQual gHC_GENERICS (fsLit "Par0") par0TyConKey
709 d1TyConName = tcQual gHC_GENERICS (fsLit "D1") d1TyConKey
710 c1TyConName = tcQual gHC_GENERICS (fsLit "C1") c1TyConKey
711 s1TyConName = tcQual gHC_GENERICS (fsLit "S1") s1TyConKey
712 noSelTyConName = tcQual gHC_GENERICS (fsLit "NoSelector") noSelTyConKey
714 repTyConName = tcQual gHC_GENERICS (fsLit "Rep") repTyConKey
715 rep1TyConName = tcQual gHC_GENERICS (fsLit "Rep1") rep1TyConKey
717 -- Base strings Strings
718 unpackCStringName, unpackCStringAppendName, unpackCStringFoldrName,
719 unpackCStringUtf8Name, eqStringName, stringTyConName :: Name
720 unpackCStringName = varQual gHC_CSTRING (fsLit "unpackCString#") unpackCStringIdKey
721 unpackCStringAppendName = varQual gHC_CSTRING (fsLit "unpackAppendCString#") unpackCStringAppendIdKey
722 unpackCStringFoldrName = varQual gHC_CSTRING (fsLit "unpackFoldrCString#") unpackCStringFoldrIdKey
723 unpackCStringUtf8Name = varQual gHC_CSTRING (fsLit "unpackCStringUtf8#") unpackCStringUtf8IdKey
724 eqStringName = varQual gHC_BASE (fsLit "eqString") eqStringIdKey
725 stringTyConName = tcQual gHC_BASE (fsLit "String") stringTyConKey
727 -- The 'inline' function
729 inlineIdName = varQual gHC_MAGIC (fsLit "inline") inlineIdKey
731 -- Base classes (Eq, Ord, Functor)
732 fmapName, eqClassName, eqName, ordClassName, geName, functorClassName :: Name
733 eqClassName = clsQual gHC_CLASSES (fsLit "Eq") eqClassKey
734 eqName = methName gHC_CLASSES (fsLit "==") eqClassOpKey
735 ordClassName = clsQual gHC_CLASSES (fsLit "Ord") ordClassKey
736 geName = methName gHC_CLASSES (fsLit ">=") geClassOpKey
737 functorClassName = clsQual gHC_BASE (fsLit "Functor") functorClassKey
738 fmapName = methName gHC_BASE (fsLit "fmap") fmapClassOpKey
741 monadClassName, thenMName, bindMName, returnMName, failMName :: Name
742 monadClassName = clsQual gHC_BASE (fsLit "Monad") monadClassKey
743 thenMName = methName gHC_BASE (fsLit ">>") thenMClassOpKey
744 bindMName = methName gHC_BASE (fsLit ">>=") bindMClassOpKey
745 returnMName = methName gHC_BASE (fsLit "return") returnMClassOpKey
746 failMName = methName gHC_BASE (fsLit "fail") failMClassOpKey
748 -- Classes (Applicative, Foldable, Traversable)
749 applicativeClassName, foldableClassName, traversableClassName :: Name
750 applicativeClassName = clsQual cONTROL_APPLICATIVE (fsLit "Applicative") applicativeClassKey
751 foldableClassName = clsQual dATA_FOLDABLE (fsLit "Foldable") foldableClassKey
752 traversableClassName = clsQual dATA_TRAVERSABLE (fsLit "Traversable") traversableClassKey
754 -- Functions for GHC extensions
755 groupWithName :: Name
756 groupWithName = varQual gHC_EXTS (fsLit "groupWith") groupWithIdKey
758 -- Random PrelBase functions
759 fromStringName, otherwiseIdName, foldrName, buildName, augmentName,
760 mapName, appendName, assertName,
761 breakpointName, breakpointCondName, breakpointAutoName,
762 dollarName, opaqueTyConName :: Name
763 fromStringName = methName dATA_STRING (fsLit "fromString") fromStringClassOpKey
764 otherwiseIdName = varQual gHC_BASE (fsLit "otherwise") otherwiseIdKey
765 foldrName = varQual gHC_BASE (fsLit "foldr") foldrIdKey
766 buildName = varQual gHC_BASE (fsLit "build") buildIdKey
767 augmentName = varQual gHC_BASE (fsLit "augment") augmentIdKey
768 mapName = varQual gHC_BASE (fsLit "map") mapIdKey
769 appendName = varQual gHC_BASE (fsLit "++") appendIdKey
770 dollarName = varQual gHC_BASE (fsLit "$") dollarIdKey
771 assertName = varQual gHC_BASE (fsLit "assert") assertIdKey
772 breakpointName = varQual gHC_BASE (fsLit "breakpoint") breakpointIdKey
773 breakpointCondName= varQual gHC_BASE (fsLit "breakpointCond") breakpointCondIdKey
774 breakpointAutoName= varQual gHC_BASE (fsLit "breakpointAuto") breakpointAutoIdKey
775 opaqueTyConName = tcQual gHC_BASE (fsLit "Opaque") opaqueTyConKey
777 breakpointJumpName :: Name
781 (mkOccNameFS varName (fsLit "breakpointJump"))
783 breakpointCondJumpName :: Name
784 breakpointCondJumpName
786 breakpointCondJumpIdKey
787 (mkOccNameFS varName (fsLit "breakpointCondJump"))
789 breakpointAutoJumpName :: Name
790 breakpointAutoJumpName
792 breakpointAutoJumpIdKey
793 (mkOccNameFS varName (fsLit "breakpointAutoJump"))
797 fstName, sndName :: Name
798 fstName = varQual dATA_TUPLE (fsLit "fst") fstIdKey
799 sndName = varQual dATA_TUPLE (fsLit "snd") sndIdKey
802 numClassName, fromIntegerName, minusName, negateName, plusIntegerName,
804 integerTyConName, smallIntegerName :: Name
805 numClassName = clsQual gHC_NUM (fsLit "Num") numClassKey
806 fromIntegerName = methName gHC_NUM (fsLit "fromInteger") fromIntegerClassOpKey
807 minusName = methName gHC_NUM (fsLit "-") minusClassOpKey
808 negateName = methName gHC_NUM (fsLit "negate") negateClassOpKey
809 plusIntegerName = varQual gHC_INTEGER (fsLit "plusInteger") plusIntegerIdKey
810 timesIntegerName = varQual gHC_INTEGER (fsLit "timesInteger") timesIntegerIdKey
811 integerTyConName = tcQual gHC_INTEGER_TYPE (fsLit "Integer") integerTyConKey
812 smallIntegerName = varQual gHC_INTEGER (fsLit "smallInteger") smallIntegerIdKey
814 -- GHC.Real types and classes
815 rationalTyConName, ratioTyConName, ratioDataConName, realClassName,
816 integralClassName, realFracClassName, fractionalClassName,
817 fromRationalName, toIntegerName, toRationalName, fromIntegralName,
818 realToFracName :: Name
819 rationalTyConName = tcQual gHC_REAL (fsLit "Rational") rationalTyConKey
820 ratioTyConName = tcQual gHC_REAL (fsLit "Ratio") ratioTyConKey
821 ratioDataConName = conName gHC_REAL (fsLit ":%") ratioDataConKey
822 realClassName = clsQual gHC_REAL (fsLit "Real") realClassKey
823 integralClassName = clsQual gHC_REAL (fsLit "Integral") integralClassKey
824 realFracClassName = clsQual gHC_REAL (fsLit "RealFrac") realFracClassKey
825 fractionalClassName = clsQual gHC_REAL (fsLit "Fractional") fractionalClassKey
826 fromRationalName = methName gHC_REAL (fsLit "fromRational") fromRationalClassOpKey
827 toIntegerName = methName gHC_REAL (fsLit "toInteger") toIntegerClassOpKey
828 toRationalName = methName gHC_REAL (fsLit "toRational") toRationalClassOpKey
829 fromIntegralName = varQual gHC_REAL (fsLit "fromIntegral") fromIntegralIdKey
830 realToFracName = varQual gHC_REAL (fsLit "realToFrac") realToFracIdKey
833 floatingClassName, realFloatClassName :: Name
834 floatingClassName = clsQual gHC_FLOAT (fsLit "Floating") floatingClassKey
835 realFloatClassName = clsQual gHC_FLOAT (fsLit "RealFloat") realFloatClassKey
839 ixClassName = clsQual gHC_ARR (fsLit "Ix") ixClassKey
842 typeableClassName, typeable1ClassName, typeable2ClassName,
843 typeable3ClassName, typeable4ClassName, typeable5ClassName,
844 typeable6ClassName, typeable7ClassName :: Name
845 typeableClassName = clsQual tYPEABLE (fsLit "Typeable") typeableClassKey
846 typeable1ClassName = clsQual tYPEABLE (fsLit "Typeable1") typeable1ClassKey
847 typeable2ClassName = clsQual tYPEABLE (fsLit "Typeable2") typeable2ClassKey
848 typeable3ClassName = clsQual tYPEABLE (fsLit "Typeable3") typeable3ClassKey
849 typeable4ClassName = clsQual tYPEABLE (fsLit "Typeable4") typeable4ClassKey
850 typeable5ClassName = clsQual tYPEABLE (fsLit "Typeable5") typeable5ClassKey
851 typeable6ClassName = clsQual tYPEABLE (fsLit "Typeable6") typeable6ClassKey
852 typeable7ClassName = clsQual tYPEABLE (fsLit "Typeable7") typeable7ClassKey
854 typeableClassNames :: [Name]
855 typeableClassNames = [ typeableClassName, typeable1ClassName, typeable2ClassName
856 , typeable3ClassName, typeable4ClassName, typeable5ClassName
857 , typeable6ClassName, typeable7ClassName ]
860 dataClassName :: Name
861 dataClassName = clsQual gENERICS (fsLit "Data") dataClassKey
864 assertErrorName :: Name
865 assertErrorName = varQual gHC_IO_Exception (fsLit "assertError") assertErrorIdKey
867 -- Enum module (Enum, Bounded)
868 enumClassName, enumFromName, enumFromToName, enumFromThenName,
869 enumFromThenToName, boundedClassName :: Name
870 enumClassName = clsQual gHC_ENUM (fsLit "Enum") enumClassKey
871 enumFromName = methName gHC_ENUM (fsLit "enumFrom") enumFromClassOpKey
872 enumFromToName = methName gHC_ENUM (fsLit "enumFromTo") enumFromToClassOpKey
873 enumFromThenName = methName gHC_ENUM (fsLit "enumFromThen") enumFromThenClassOpKey
874 enumFromThenToName = methName gHC_ENUM (fsLit "enumFromThenTo") enumFromThenToClassOpKey
875 boundedClassName = clsQual gHC_ENUM (fsLit "Bounded") boundedClassKey
878 concatName, filterName, zipName :: Name
879 concatName = varQual gHC_LIST (fsLit "concat") concatIdKey
880 filterName = varQual gHC_LIST (fsLit "filter") filterIdKey
881 zipName = varQual gHC_LIST (fsLit "zip") zipIdKey
884 showClassName :: Name
885 showClassName = clsQual gHC_SHOW (fsLit "Show") showClassKey
888 readClassName :: Name
889 readClassName = clsQual gHC_READ (fsLit "Read") readClassKey
891 -- Classes Generic and Generic1, Datatype, Constructor and Selector
892 genClassName, gen1ClassName, datatypeClassName, constructorClassName,
893 selectorClassName :: Name
894 genClassName = clsQual gHC_GENERICS (fsLit "Generic") genClassKey
895 gen1ClassName = clsQual gHC_GENERICS (fsLit "Generic1") gen1ClassKey
897 datatypeClassName = clsQual gHC_GENERICS (fsLit "Datatype") datatypeClassKey
898 constructorClassName = clsQual gHC_GENERICS (fsLit "Constructor") constructorClassKey
899 selectorClassName = clsQual gHC_GENERICS (fsLit "Selector") selectorClassKey
901 -- parallel array types and functions
902 enumFromToPName, enumFromThenToPName, nullPName, lengthPName,
903 singletonPName, replicatePName, mapPName, filterPName,
904 zipPName, crossMapPName, indexPName, toPName,
905 emptyPName, appPName :: PackageId -> Name
906 enumFromToPName pkg = varQual (gHC_PARR pkg) (fsLit "enumFromToP") enumFromToPIdKey
907 enumFromThenToPName pkg = varQual (gHC_PARR pkg) (fsLit "enumFromThenToP") enumFromThenToPIdKey
908 nullPName pkg = varQual (gHC_PARR pkg) (fsLit "nullP") nullPIdKey
909 lengthPName pkg = varQual (gHC_PARR pkg) (fsLit "lengthP") lengthPIdKey
910 singletonPName pkg = varQual (gHC_PARR pkg) (fsLit "singletonP") singletonPIdKey
911 replicatePName pkg = varQual (gHC_PARR pkg) (fsLit "replicateP") replicatePIdKey
912 mapPName pkg = varQual (gHC_PARR pkg) (fsLit "mapP") mapPIdKey
913 filterPName pkg = varQual (gHC_PARR pkg) (fsLit "filterP") filterPIdKey
914 zipPName pkg = varQual (gHC_PARR pkg) (fsLit "zipP") zipPIdKey
915 crossMapPName pkg = varQual (gHC_PARR pkg) (fsLit "crossMapP") crossMapPIdKey
916 indexPName pkg = varQual (gHC_PARR pkg) (fsLit "!:") indexPIdKey
917 toPName pkg = varQual (gHC_PARR pkg) (fsLit "toP") toPIdKey
918 emptyPName pkg = varQual (gHC_PARR pkg) (fsLit "emptyP") emptyPIdKey
919 appPName pkg = varQual (gHC_PARR pkg) (fsLit "+:+") appPIdKey
922 hetmet_brak_name, hetmet_esc_name, hetmet_csp_name, hetmet_flatten_name, hetmet_unflatten_name, hetmet_flattened_id_name :: Name
923 hetmet_guest_integer_literal_name, hetmet_guest_string_literal_name, hetmet_guest_char_literal_name :: Name
924 hetmet_brak_name = varQual gHC_HETMET_CODETYPES (fsLit "hetmet_brak") hetmet_brak_key
925 hetmet_esc_name = varQual gHC_HETMET_CODETYPES (fsLit "hetmet_esc") hetmet_esc_key
926 hetmet_csp_name = varQual gHC_HETMET_CODETYPES (fsLit "hetmet_csp") hetmet_csp_key
927 hetmet_flatten_name = varQual gHC_HETMET_CODETYPES (fsLit "pga_flatten") hetmet_flatten_key
928 hetmet_unflatten_name = varQual gHC_HETMET_CODETYPES (fsLit "pga_unflatten") hetmet_unflatten_key
929 hetmet_flattened_id_name = varQual gHC_HETMET_CODETYPES (fsLit "pga_flattened_id") hetmet_flattened_id_key
930 hetmet_guest_integer_literal_name = varQual gHC_HETMET_CODETYPES (fsLit "guestIntegerLiteral") hetmet_guest_integer_literal_key
931 hetmet_guest_string_literal_name = varQual gHC_HETMET_CODETYPES (fsLit "guestStringLiteral") hetmet_guest_string_literal_key
932 hetmet_guest_char_literal_name = varQual gHC_HETMET_CODETYPES (fsLit "guestCharLiteral") hetmet_guest_char_literal_key
934 hetmet_PGArrow_name :: Name
935 hetmet_PGArrow_name = tcQual gHC_HETMET_PRIVATE (fsLit "PGArrow") hetmet_PGArrow_key
936 hetmet_PGArrow_unit_name :: Name
937 hetmet_PGArrow_unit_name = tcQual gHC_HETMET_GARROW (fsLit "GArrowUnit") hetmet_PGArrow_unit_key
938 hetmet_PGArrow_tensor_name :: Name
939 hetmet_PGArrow_tensor_name = tcQual gHC_HETMET_GARROW (fsLit "GArrowTensor") hetmet_PGArrow_tensor_key
940 hetmet_PGArrow_exponent_name :: Name
941 hetmet_PGArrow_exponent_name = tcQual gHC_HETMET_GARROW (fsLit "GArrowExponent") hetmet_PGArrow_exponent_key
942 hetmet_pga_id_name :: Name
943 hetmet_pga_id_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_id") hetmet_pga_id_key
944 hetmet_pga_comp_name :: Name
945 hetmet_pga_comp_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_comp") hetmet_pga_comp_key
946 hetmet_pga_first_name :: Name
947 hetmet_pga_first_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_first") hetmet_pga_first_key
948 hetmet_pga_second_name :: Name
949 hetmet_pga_second_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_second") hetmet_pga_second_key
950 hetmet_pga_cancell_name :: Name
951 hetmet_pga_cancell_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_cancell") hetmet_pga_cancell_key
952 hetmet_pga_cancelr_name :: Name
953 hetmet_pga_cancelr_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_cancelr") hetmet_pga_cancelr_key
954 hetmet_pga_uncancell_name :: Name
955 hetmet_pga_uncancell_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_uncancell") hetmet_pga_uncancell_key
956 hetmet_pga_uncancelr_name :: Name
957 hetmet_pga_uncancelr_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_uncancelr") hetmet_pga_uncancelr_key
958 hetmet_pga_assoc_name :: Name
959 hetmet_pga_assoc_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_assoc") hetmet_pga_assoc_key
960 hetmet_pga_unassoc_name :: Name
961 hetmet_pga_unassoc_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_unassoc") hetmet_pga_unassoc_key
962 hetmet_pga_copy_name :: Name
963 hetmet_pga_copy_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_copy") hetmet_pga_copy_key
964 hetmet_pga_drop_name :: Name
965 hetmet_pga_drop_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_drop") hetmet_pga_drop_key
966 hetmet_pga_swap_name :: Name
967 hetmet_pga_swap_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_swap") hetmet_pga_swap_key
968 hetmet_pga_applyl_name :: Name
969 hetmet_pga_applyl_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_applyl") hetmet_pga_applyl_key
970 hetmet_pga_applyr_name :: Name
971 hetmet_pga_applyr_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_applyr") hetmet_pga_applyr_key
972 hetmet_pga_curryl_name :: Name
973 hetmet_pga_curryl_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_curryl") hetmet_pga_curryl_key
974 hetmet_pga_curryr_name :: Name
975 hetmet_pga_curryr_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_curryr") hetmet_pga_curryr_key
976 hetmet_pga_loopl_name :: Name
977 hetmet_pga_loopl_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_loopl") hetmet_pga_loopl_key
978 hetmet_pga_loopr_name :: Name
979 hetmet_pga_loopr_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_loopr") hetmet_pga_loopr_key
982 ioTyConName, ioDataConName, thenIOName, bindIOName, returnIOName,
984 ioTyConName = tcQual gHC_TYPES (fsLit "IO") ioTyConKey
985 ioDataConName = conName gHC_TYPES (fsLit "IO") ioDataConKey
986 thenIOName = varQual gHC_BASE (fsLit "thenIO") thenIOIdKey
987 bindIOName = varQual gHC_BASE (fsLit "bindIO") bindIOIdKey
988 returnIOName = varQual gHC_BASE (fsLit "returnIO") returnIOIdKey
989 failIOName = varQual gHC_IO (fsLit "failIO") failIOIdKey
993 printName = varQual sYSTEM_IO (fsLit "print") printIdKey
995 -- Int, Word, and Addr things
996 int8TyConName, int16TyConName, int32TyConName, int64TyConName :: Name
997 int8TyConName = tcQual gHC_INT (fsLit "Int8") int8TyConKey
998 int16TyConName = tcQual gHC_INT (fsLit "Int16") int16TyConKey
999 int32TyConName = tcQual gHC_INT (fsLit "Int32") int32TyConKey
1000 int64TyConName = tcQual gHC_INT (fsLit "Int64") int64TyConKey
1003 word8TyConName, word16TyConName, word32TyConName, word64TyConName,
1004 wordTyConName, wordDataConName :: Name
1005 word8TyConName = tcQual gHC_WORD (fsLit "Word8") word8TyConKey
1006 word16TyConName = tcQual gHC_WORD (fsLit "Word16") word16TyConKey
1007 word32TyConName = tcQual gHC_WORD (fsLit "Word32") word32TyConKey
1008 word64TyConName = tcQual gHC_WORD (fsLit "Word64") word64TyConKey
1009 wordTyConName = tcQual gHC_WORD (fsLit "Word") wordTyConKey
1010 wordDataConName = conName gHC_WORD (fsLit "W#") wordDataConKey
1013 ptrTyConName, funPtrTyConName :: Name
1014 ptrTyConName = tcQual gHC_PTR (fsLit "Ptr") ptrTyConKey
1015 funPtrTyConName = tcQual gHC_PTR (fsLit "FunPtr") funPtrTyConKey
1017 -- Foreign objects and weak pointers
1018 stablePtrTyConName, newStablePtrName :: Name
1019 stablePtrTyConName = tcQual gHC_STABLE (fsLit "StablePtr") stablePtrTyConKey
1020 newStablePtrName = varQual gHC_STABLE (fsLit "newStablePtr") newStablePtrIdKey
1023 runSTRepName :: Name
1024 runSTRepName = varQual gHC_ST (fsLit "runSTRep") runSTRepIdKey
1026 -- Recursive-do notation
1027 monadFixClassName, mfixName :: Name
1028 monadFixClassName = clsQual mONAD_FIX (fsLit "MonadFix") monadFixClassKey
1029 mfixName = methName mONAD_FIX (fsLit "mfix") mfixIdKey
1032 arrAName, composeAName, firstAName, appAName, choiceAName, loopAName :: Name
1033 arrAName = varQual aRROW (fsLit "arr") arrAIdKey
1034 composeAName = varQual gHC_DESUGAR (fsLit ">>>") composeAIdKey
1035 firstAName = varQual aRROW (fsLit "first") firstAIdKey
1036 appAName = varQual aRROW (fsLit "app") appAIdKey
1037 choiceAName = varQual aRROW (fsLit "|||") choiceAIdKey
1038 loopAName = varQual aRROW (fsLit "loop") loopAIdKey
1040 -- Monad comprehensions
1041 guardMName, liftMName, groupMName, mzipName :: Name
1042 guardMName = varQual mONAD (fsLit "guard") guardMIdKey
1043 liftMName = varQual mONAD (fsLit "liftM") liftMIdKey
1044 groupMName = varQual mONAD_GROUP (fsLit "mgroupWith") groupMIdKey
1045 mzipName = varQual mONAD_ZIP (fsLit "mzip") mzipIdKey
1048 -- Annotation type checking
1049 toAnnotationWrapperName :: Name
1050 toAnnotationWrapperName = varQual gHC_DESUGAR (fsLit "toAnnotationWrapper") toAnnotationWrapperIdKey
1052 -- Other classes, needed for type defaulting
1053 monadPlusClassName, randomClassName, randomGenClassName,
1054 isStringClassName :: Name
1055 monadPlusClassName = clsQual mONAD (fsLit "MonadPlus") monadPlusClassKey
1056 randomClassName = clsQual rANDOM (fsLit "Random") randomClassKey
1057 randomGenClassName = clsQual rANDOM (fsLit "RandomGen") randomGenClassKey
1058 isStringClassName = clsQual dATA_STRING (fsLit "IsString") isStringClassKey
1061 objectTyConName :: Name
1062 objectTyConName = tcQual dOTNET (fsLit "Object") objectTyConKey
1063 -- objectTyConName was "wTcQual", but that's gone now, and
1064 -- I can't see why it was wired in anyway...
1065 unmarshalObjectName, marshalObjectName, marshalStringName,
1066 unmarshalStringName, checkDotnetResName :: Name
1067 unmarshalObjectName = varQual dOTNET (fsLit "unmarshalObject") unmarshalObjectIdKey
1068 marshalObjectName = varQual dOTNET (fsLit "marshalObject") marshalObjectIdKey
1069 marshalStringName = varQual dOTNET (fsLit "marshalString") marshalStringIdKey
1070 unmarshalStringName = varQual dOTNET (fsLit "unmarshalString") unmarshalStringIdKey
1071 checkDotnetResName = varQual dOTNET (fsLit "checkResult") checkDotnetResNameIdKey
1074 %************************************************************************
1076 \subsection{Local helpers}
1078 %************************************************************************
1080 All these are original names; hence mkOrig
1083 varQual, tcQual, clsQual :: Module -> FastString -> Unique -> Name
1084 varQual = mk_known_key_name varName
1085 tcQual = mk_known_key_name tcName
1086 clsQual = mk_known_key_name clsName
1088 mk_known_key_name :: NameSpace -> Module -> FastString -> Unique -> Name
1089 mk_known_key_name space modu str unique
1090 = mkExternalName unique modu (mkOccNameFS space str) noSrcSpan
1092 conName :: Module -> FastString -> Unique -> Name
1093 conName modu occ unique
1094 = mkExternalName unique modu (mkOccNameFS dataName occ) noSrcSpan
1096 methName :: Module -> FastString -> Unique -> Name
1097 methName modu occ unique
1098 = mkExternalName unique modu (mkVarOccFS occ) noSrcSpan
1101 %************************************************************************
1103 \subsubsection[Uniques-prelude-Classes]{@Uniques@ for wired-in @Classes@}
1105 %************************************************************************
1106 --MetaHaskell extension hand allocate keys here
1109 boundedClassKey, enumClassKey, eqClassKey, floatingClassKey,
1110 fractionalClassKey, integralClassKey, monadClassKey, dataClassKey,
1111 functorClassKey, numClassKey, ordClassKey, readClassKey, realClassKey,
1112 realFloatClassKey, realFracClassKey, showClassKey, ixClassKey :: Unique
1113 boundedClassKey = mkPreludeClassUnique 1
1114 enumClassKey = mkPreludeClassUnique 2
1115 eqClassKey = mkPreludeClassUnique 3
1116 floatingClassKey = mkPreludeClassUnique 5
1117 fractionalClassKey = mkPreludeClassUnique 6
1118 integralClassKey = mkPreludeClassUnique 7
1119 monadClassKey = mkPreludeClassUnique 8
1120 dataClassKey = mkPreludeClassUnique 9
1121 functorClassKey = mkPreludeClassUnique 10
1122 numClassKey = mkPreludeClassUnique 11
1123 ordClassKey = mkPreludeClassUnique 12
1124 readClassKey = mkPreludeClassUnique 13
1125 realClassKey = mkPreludeClassUnique 14
1126 realFloatClassKey = mkPreludeClassUnique 15
1127 realFracClassKey = mkPreludeClassUnique 16
1128 showClassKey = mkPreludeClassUnique 17
1129 ixClassKey = mkPreludeClassUnique 18
1131 typeableClassKey, typeable1ClassKey, typeable2ClassKey, typeable3ClassKey,
1132 typeable4ClassKey, typeable5ClassKey, typeable6ClassKey, typeable7ClassKey
1134 typeableClassKey = mkPreludeClassUnique 20
1135 typeable1ClassKey = mkPreludeClassUnique 21
1136 typeable2ClassKey = mkPreludeClassUnique 22
1137 typeable3ClassKey = mkPreludeClassUnique 23
1138 typeable4ClassKey = mkPreludeClassUnique 24
1139 typeable5ClassKey = mkPreludeClassUnique 25
1140 typeable6ClassKey = mkPreludeClassUnique 26
1141 typeable7ClassKey = mkPreludeClassUnique 27
1143 monadFixClassKey :: Unique
1144 monadFixClassKey = mkPreludeClassUnique 28
1146 monadPlusClassKey, randomClassKey, randomGenClassKey :: Unique
1147 monadPlusClassKey = mkPreludeClassUnique 30
1148 randomClassKey = mkPreludeClassUnique 31
1149 randomGenClassKey = mkPreludeClassUnique 32
1151 isStringClassKey :: Unique
1152 isStringClassKey = mkPreludeClassUnique 33
1154 applicativeClassKey, foldableClassKey, traversableClassKey :: Unique
1155 applicativeClassKey = mkPreludeClassUnique 34
1156 foldableClassKey = mkPreludeClassUnique 35
1157 traversableClassKey = mkPreludeClassUnique 36
1159 genClassKey, gen1ClassKey, datatypeClassKey, constructorClassKey,
1160 selectorClassKey :: Unique
1161 genClassKey = mkPreludeClassUnique 37
1162 gen1ClassKey = mkPreludeClassUnique 38
1164 datatypeClassKey = mkPreludeClassUnique 39
1165 constructorClassKey = mkPreludeClassUnique 40
1166 selectorClassKey = mkPreludeClassUnique 41
1169 %************************************************************************
1171 \subsubsection[Uniques-prelude-TyCons]{@Uniques@ for wired-in @TyCons@}
1173 %************************************************************************
1176 addrPrimTyConKey, arrayPrimTyConKey, boolTyConKey, byteArrayPrimTyConKey,
1177 charPrimTyConKey, charTyConKey, doublePrimTyConKey, doubleTyConKey,
1178 floatPrimTyConKey, floatTyConKey, funTyConKey, intPrimTyConKey,
1179 intTyConKey, int8TyConKey, int16TyConKey, int32PrimTyConKey,
1180 int32TyConKey, int64PrimTyConKey, int64TyConKey, integerTyConKey,
1181 listTyConKey, foreignObjPrimTyConKey, weakPrimTyConKey,
1182 mutableArrayPrimTyConKey, mutableByteArrayPrimTyConKey,
1183 orderingTyConKey, mVarPrimTyConKey, ratioTyConKey, rationalTyConKey,
1184 realWorldTyConKey, stablePtrPrimTyConKey, stablePtrTyConKey,
1185 anyTyConKey :: Unique
1186 addrPrimTyConKey = mkPreludeTyConUnique 1
1187 arrayPrimTyConKey = mkPreludeTyConUnique 3
1188 boolTyConKey = mkPreludeTyConUnique 4
1189 byteArrayPrimTyConKey = mkPreludeTyConUnique 5
1190 charPrimTyConKey = mkPreludeTyConUnique 7
1191 charTyConKey = mkPreludeTyConUnique 8
1192 doublePrimTyConKey = mkPreludeTyConUnique 9
1193 doubleTyConKey = mkPreludeTyConUnique 10
1194 floatPrimTyConKey = mkPreludeTyConUnique 11
1195 floatTyConKey = mkPreludeTyConUnique 12
1196 funTyConKey = mkPreludeTyConUnique 13
1197 intPrimTyConKey = mkPreludeTyConUnique 14
1198 intTyConKey = mkPreludeTyConUnique 15
1199 int8TyConKey = mkPreludeTyConUnique 16
1200 int16TyConKey = mkPreludeTyConUnique 17
1201 int32PrimTyConKey = mkPreludeTyConUnique 18
1202 int32TyConKey = mkPreludeTyConUnique 19
1203 int64PrimTyConKey = mkPreludeTyConUnique 20
1204 int64TyConKey = mkPreludeTyConUnique 21
1205 integerTyConKey = mkPreludeTyConUnique 22
1206 listTyConKey = mkPreludeTyConUnique 23
1207 foreignObjPrimTyConKey = mkPreludeTyConUnique 24
1208 weakPrimTyConKey = mkPreludeTyConUnique 27
1209 mutableArrayPrimTyConKey = mkPreludeTyConUnique 28
1210 mutableByteArrayPrimTyConKey = mkPreludeTyConUnique 29
1211 orderingTyConKey = mkPreludeTyConUnique 30
1212 mVarPrimTyConKey = mkPreludeTyConUnique 31
1213 ratioTyConKey = mkPreludeTyConUnique 32
1214 rationalTyConKey = mkPreludeTyConUnique 33
1215 realWorldTyConKey = mkPreludeTyConUnique 34
1216 stablePtrPrimTyConKey = mkPreludeTyConUnique 35
1217 stablePtrTyConKey = mkPreludeTyConUnique 36
1218 anyTyConKey = mkPreludeTyConUnique 37
1220 statePrimTyConKey, stableNamePrimTyConKey, stableNameTyConKey,
1221 mutVarPrimTyConKey, ioTyConKey,
1222 wordPrimTyConKey, wordTyConKey, word8TyConKey, word16TyConKey,
1223 word32PrimTyConKey, word32TyConKey, word64PrimTyConKey, word64TyConKey,
1224 liftedConKey, unliftedConKey, anyBoxConKey, kindConKey, boxityConKey,
1225 typeConKey, threadIdPrimTyConKey, bcoPrimTyConKey, ptrTyConKey,
1226 funPtrTyConKey, tVarPrimTyConKey, eqPredPrimTyConKey :: Unique
1227 statePrimTyConKey = mkPreludeTyConUnique 50
1228 stableNamePrimTyConKey = mkPreludeTyConUnique 51
1229 stableNameTyConKey = mkPreludeTyConUnique 52
1230 eqPredPrimTyConKey = mkPreludeTyConUnique 53
1231 mutVarPrimTyConKey = mkPreludeTyConUnique 55
1232 ioTyConKey = mkPreludeTyConUnique 56
1233 wordPrimTyConKey = mkPreludeTyConUnique 58
1234 wordTyConKey = mkPreludeTyConUnique 59
1235 word8TyConKey = mkPreludeTyConUnique 60
1236 word16TyConKey = mkPreludeTyConUnique 61
1237 word32PrimTyConKey = mkPreludeTyConUnique 62
1238 word32TyConKey = mkPreludeTyConUnique 63
1239 word64PrimTyConKey = mkPreludeTyConUnique 64
1240 word64TyConKey = mkPreludeTyConUnique 65
1241 liftedConKey = mkPreludeTyConUnique 66
1242 unliftedConKey = mkPreludeTyConUnique 67
1243 anyBoxConKey = mkPreludeTyConUnique 68
1244 kindConKey = mkPreludeTyConUnique 69
1245 boxityConKey = mkPreludeTyConUnique 70
1246 typeConKey = mkPreludeTyConUnique 71
1247 threadIdPrimTyConKey = mkPreludeTyConUnique 72
1248 bcoPrimTyConKey = mkPreludeTyConUnique 73
1249 ptrTyConKey = mkPreludeTyConUnique 74
1250 funPtrTyConKey = mkPreludeTyConUnique 75
1251 tVarPrimTyConKey = mkPreludeTyConUnique 76
1253 -- Parallel array type constructor
1254 parrTyConKey :: Unique
1255 parrTyConKey = mkPreludeTyConUnique 82
1258 objectTyConKey :: Unique
1259 objectTyConKey = mkPreludeTyConUnique 83
1261 eitherTyConKey :: Unique
1262 eitherTyConKey = mkPreludeTyConUnique 84
1264 -- Super Kinds constructors
1265 tySuperKindTyConKey :: Unique
1266 tySuperKindTyConKey = mkPreludeTyConUnique 85
1268 -- Kind constructors
1269 liftedTypeKindTyConKey, openTypeKindTyConKey, unliftedTypeKindTyConKey,
1270 ubxTupleKindTyConKey, argTypeKindTyConKey :: Unique
1271 liftedTypeKindTyConKey = mkPreludeTyConUnique 87
1272 openTypeKindTyConKey = mkPreludeTyConUnique 88
1273 unliftedTypeKindTyConKey = mkPreludeTyConUnique 89
1274 ubxTupleKindTyConKey = mkPreludeTyConUnique 90
1275 argTypeKindTyConKey = mkPreludeTyConUnique 91
1277 -- Coercion constructors
1278 symCoercionTyConKey, transCoercionTyConKey, leftCoercionTyConKey,
1279 rightCoercionTyConKey, instCoercionTyConKey, unsafeCoercionTyConKey,
1280 csel1CoercionTyConKey, csel2CoercionTyConKey, cselRCoercionTyConKey
1282 symCoercionTyConKey = mkPreludeTyConUnique 93
1283 transCoercionTyConKey = mkPreludeTyConUnique 94
1284 leftCoercionTyConKey = mkPreludeTyConUnique 95
1285 rightCoercionTyConKey = mkPreludeTyConUnique 96
1286 instCoercionTyConKey = mkPreludeTyConUnique 97
1287 unsafeCoercionTyConKey = mkPreludeTyConUnique 98
1288 csel1CoercionTyConKey = mkPreludeTyConUnique 99
1289 csel2CoercionTyConKey = mkPreludeTyConUnique 100
1290 cselRCoercionTyConKey = mkPreludeTyConUnique 101
1292 unknownTyConKey, unknown1TyConKey, unknown2TyConKey, unknown3TyConKey,
1293 opaqueTyConKey :: Unique
1294 unknownTyConKey = mkPreludeTyConUnique 129
1295 unknown1TyConKey = mkPreludeTyConUnique 130
1296 unknown2TyConKey = mkPreludeTyConUnique 131
1297 unknown3TyConKey = mkPreludeTyConUnique 132
1298 opaqueTyConKey = mkPreludeTyConUnique 133
1300 stringTyConKey :: Unique
1301 stringTyConKey = mkPreludeTyConUnique 134
1303 -- Generics (Unique keys)
1304 v1TyConKey, u1TyConKey, par1TyConKey, rec1TyConKey,
1305 k1TyConKey, m1TyConKey, sumTyConKey, prodTyConKey,
1306 compTyConKey, rTyConKey, pTyConKey, dTyConKey,
1307 cTyConKey, sTyConKey, rec0TyConKey, par0TyConKey,
1308 d1TyConKey, c1TyConKey, s1TyConKey, noSelTyConKey,
1309 repTyConKey, rep1TyConKey :: Unique
1311 v1TyConKey = mkPreludeTyConUnique 135
1312 u1TyConKey = mkPreludeTyConUnique 136
1313 par1TyConKey = mkPreludeTyConUnique 137
1314 rec1TyConKey = mkPreludeTyConUnique 138
1315 k1TyConKey = mkPreludeTyConUnique 139
1316 m1TyConKey = mkPreludeTyConUnique 140
1318 sumTyConKey = mkPreludeTyConUnique 141
1319 prodTyConKey = mkPreludeTyConUnique 142
1320 compTyConKey = mkPreludeTyConUnique 143
1322 rTyConKey = mkPreludeTyConUnique 144
1323 pTyConKey = mkPreludeTyConUnique 145
1324 dTyConKey = mkPreludeTyConUnique 146
1325 cTyConKey = mkPreludeTyConUnique 147
1326 sTyConKey = mkPreludeTyConUnique 148
1328 rec0TyConKey = mkPreludeTyConUnique 149
1329 par0TyConKey = mkPreludeTyConUnique 150
1330 d1TyConKey = mkPreludeTyConUnique 151
1331 c1TyConKey = mkPreludeTyConUnique 152
1332 s1TyConKey = mkPreludeTyConUnique 153
1333 noSelTyConKey = mkPreludeTyConUnique 154
1335 repTyConKey = mkPreludeTyConUnique 155
1336 rep1TyConKey = mkPreludeTyConUnique 156
1338 ---------------- Template Haskell -------------------
1339 -- USES TyConUniques 200-299
1340 -----------------------------------------------------
1342 unitTyConKey :: Unique
1343 unitTyConKey = mkTupleTyConUnique Boxed 0
1346 %************************************************************************
1348 \subsubsection[Uniques-prelude-DataCons]{@Uniques@ for wired-in @DataCons@}
1350 %************************************************************************
1353 charDataConKey, consDataConKey, doubleDataConKey, falseDataConKey,
1354 floatDataConKey, intDataConKey, nilDataConKey, ratioDataConKey,
1355 stableNameDataConKey, trueDataConKey, wordDataConKey,
1356 ioDataConKey, integerDataConKey :: Unique
1357 charDataConKey = mkPreludeDataConUnique 1
1358 consDataConKey = mkPreludeDataConUnique 2
1359 doubleDataConKey = mkPreludeDataConUnique 3
1360 falseDataConKey = mkPreludeDataConUnique 4
1361 floatDataConKey = mkPreludeDataConUnique 5
1362 intDataConKey = mkPreludeDataConUnique 6
1363 nilDataConKey = mkPreludeDataConUnique 11
1364 ratioDataConKey = mkPreludeDataConUnique 12
1365 stableNameDataConKey = mkPreludeDataConUnique 14
1366 trueDataConKey = mkPreludeDataConUnique 15
1367 wordDataConKey = mkPreludeDataConUnique 16
1368 ioDataConKey = mkPreludeDataConUnique 17
1369 integerDataConKey = mkPreludeDataConUnique 18
1371 -- Generic data constructors
1372 crossDataConKey, inlDataConKey, inrDataConKey, genUnitDataConKey :: Unique
1373 crossDataConKey = mkPreludeDataConUnique 20
1374 inlDataConKey = mkPreludeDataConUnique 21
1375 inrDataConKey = mkPreludeDataConUnique 22
1376 genUnitDataConKey = mkPreludeDataConUnique 23
1378 -- Data constructor for parallel arrays
1379 parrDataConKey :: Unique
1380 parrDataConKey = mkPreludeDataConUnique 24
1382 leftDataConKey, rightDataConKey :: Unique
1383 leftDataConKey = mkPreludeDataConUnique 25
1384 rightDataConKey = mkPreludeDataConUnique 26
1386 -- Data constructor for Heterogeneous Metaprogramming code types
1387 hetMetCodeTypeDataConKey :: Unique
1388 hetMetCodeTypeDataConKey = mkPreludeDataConUnique 27
1391 %************************************************************************
1393 \subsubsection[Uniques-prelude-Ids]{@Uniques@ for wired-in @Ids@ (except @DataCons@)}
1395 %************************************************************************
1398 absentErrorIdKey, augmentIdKey, appendIdKey, buildIdKey, errorIdKey,
1399 foldlIdKey, foldrIdKey, recSelErrorIdKey,
1400 integerMinusOneIdKey, integerPlusOneIdKey,
1401 integerPlusTwoIdKey, integerZeroIdKey,
1402 int2IntegerIdKey, seqIdKey, irrefutPatErrorIdKey, eqStringIdKey,
1403 noMethodBindingErrorIdKey, nonExhaustiveGuardsErrorIdKey,
1404 runtimeErrorIdKey, parErrorIdKey, parIdKey, patErrorIdKey,
1405 realWorldPrimIdKey, recConErrorIdKey, recUpdErrorIdKey,
1406 traceIdKey, wildCardKey,
1407 unpackCStringUtf8IdKey, unpackCStringAppendIdKey,
1408 unpackCStringFoldrIdKey, unpackCStringIdKey :: Unique
1409 wildCardKey = mkPreludeMiscIdUnique 0 -- See Note [WildCard]
1410 absentErrorIdKey = mkPreludeMiscIdUnique 1
1411 augmentIdKey = mkPreludeMiscIdUnique 3
1412 appendIdKey = mkPreludeMiscIdUnique 4
1413 buildIdKey = mkPreludeMiscIdUnique 5
1414 errorIdKey = mkPreludeMiscIdUnique 6
1415 foldlIdKey = mkPreludeMiscIdUnique 7
1416 foldrIdKey = mkPreludeMiscIdUnique 8
1417 recSelErrorIdKey = mkPreludeMiscIdUnique 9
1418 integerMinusOneIdKey = mkPreludeMiscIdUnique 10
1419 integerPlusOneIdKey = mkPreludeMiscIdUnique 11
1420 integerPlusTwoIdKey = mkPreludeMiscIdUnique 12
1421 integerZeroIdKey = mkPreludeMiscIdUnique 13
1422 int2IntegerIdKey = mkPreludeMiscIdUnique 14
1423 seqIdKey = mkPreludeMiscIdUnique 15
1424 irrefutPatErrorIdKey = mkPreludeMiscIdUnique 16
1425 eqStringIdKey = mkPreludeMiscIdUnique 17
1426 noMethodBindingErrorIdKey = mkPreludeMiscIdUnique 18
1427 nonExhaustiveGuardsErrorIdKey = mkPreludeMiscIdUnique 19
1428 runtimeErrorIdKey = mkPreludeMiscIdUnique 20
1429 parErrorIdKey = mkPreludeMiscIdUnique 21
1430 parIdKey = mkPreludeMiscIdUnique 22
1431 patErrorIdKey = mkPreludeMiscIdUnique 23
1432 realWorldPrimIdKey = mkPreludeMiscIdUnique 24
1433 recConErrorIdKey = mkPreludeMiscIdUnique 25
1434 recUpdErrorIdKey = mkPreludeMiscIdUnique 26
1435 traceIdKey = mkPreludeMiscIdUnique 27
1436 unpackCStringUtf8IdKey = mkPreludeMiscIdUnique 28
1437 unpackCStringAppendIdKey = mkPreludeMiscIdUnique 29
1438 unpackCStringFoldrIdKey = mkPreludeMiscIdUnique 30
1439 unpackCStringIdKey = mkPreludeMiscIdUnique 31
1441 unsafeCoerceIdKey, concatIdKey, filterIdKey, zipIdKey, bindIOIdKey,
1442 returnIOIdKey, deRefStablePtrIdKey, newStablePtrIdKey,
1443 smallIntegerIdKey, plusIntegerIdKey, timesIntegerIdKey,
1444 printIdKey, failIOIdKey, nullAddrIdKey, voidArgIdKey,
1445 fstIdKey, sndIdKey, otherwiseIdKey, assertIdKey, runSTRepIdKey :: Unique
1446 unsafeCoerceIdKey = mkPreludeMiscIdUnique 32
1447 concatIdKey = mkPreludeMiscIdUnique 33
1448 filterIdKey = mkPreludeMiscIdUnique 34
1449 zipIdKey = mkPreludeMiscIdUnique 35
1450 bindIOIdKey = mkPreludeMiscIdUnique 36
1451 returnIOIdKey = mkPreludeMiscIdUnique 37
1452 deRefStablePtrIdKey = mkPreludeMiscIdUnique 38
1453 newStablePtrIdKey = mkPreludeMiscIdUnique 39
1454 smallIntegerIdKey = mkPreludeMiscIdUnique 40
1455 plusIntegerIdKey = mkPreludeMiscIdUnique 41
1456 timesIntegerIdKey = mkPreludeMiscIdUnique 42
1457 printIdKey = mkPreludeMiscIdUnique 43
1458 failIOIdKey = mkPreludeMiscIdUnique 44
1459 nullAddrIdKey = mkPreludeMiscIdUnique 46
1460 voidArgIdKey = mkPreludeMiscIdUnique 47
1461 fstIdKey = mkPreludeMiscIdUnique 49
1462 sndIdKey = mkPreludeMiscIdUnique 50
1463 otherwiseIdKey = mkPreludeMiscIdUnique 51
1464 assertIdKey = mkPreludeMiscIdUnique 53
1465 runSTRepIdKey = mkPreludeMiscIdUnique 54
1467 rootMainKey, runMainKey :: Unique
1468 rootMainKey = mkPreludeMiscIdUnique 55
1469 runMainKey = mkPreludeMiscIdUnique 56
1471 thenIOIdKey, lazyIdKey, assertErrorIdKey :: Unique
1472 thenIOIdKey = mkPreludeMiscIdUnique 59
1473 lazyIdKey = mkPreludeMiscIdUnique 60
1474 assertErrorIdKey = mkPreludeMiscIdUnique 61
1476 breakpointIdKey, breakpointCondIdKey, breakpointAutoIdKey,
1477 breakpointJumpIdKey, breakpointCondJumpIdKey,
1478 breakpointAutoJumpIdKey :: Unique
1479 breakpointIdKey = mkPreludeMiscIdUnique 62
1480 breakpointCondIdKey = mkPreludeMiscIdUnique 63
1481 breakpointAutoIdKey = mkPreludeMiscIdUnique 64
1482 breakpointJumpIdKey = mkPreludeMiscIdUnique 65
1483 breakpointCondJumpIdKey = mkPreludeMiscIdUnique 66
1484 breakpointAutoJumpIdKey = mkPreludeMiscIdUnique 67
1486 inlineIdKey :: Unique
1487 inlineIdKey = mkPreludeMiscIdUnique 68
1489 mapIdKey, groupWithIdKey, dollarIdKey :: Unique
1490 mapIdKey = mkPreludeMiscIdUnique 69
1491 groupWithIdKey = mkPreludeMiscIdUnique 70
1492 dollarIdKey = mkPreludeMiscIdUnique 71
1494 coercionTokenIdKey :: Unique
1495 coercionTokenIdKey = mkPreludeMiscIdUnique 72
1497 -- Parallel array functions
1498 singletonPIdKey, nullPIdKey, lengthPIdKey, replicatePIdKey, mapPIdKey,
1499 filterPIdKey, zipPIdKey, crossMapPIdKey, indexPIdKey, toPIdKey,
1500 enumFromToPIdKey, enumFromThenToPIdKey, emptyPIdKey, appPIdKey :: Unique
1501 singletonPIdKey = mkPreludeMiscIdUnique 79
1502 nullPIdKey = mkPreludeMiscIdUnique 80
1503 lengthPIdKey = mkPreludeMiscIdUnique 81
1504 replicatePIdKey = mkPreludeMiscIdUnique 82
1505 mapPIdKey = mkPreludeMiscIdUnique 83
1506 filterPIdKey = mkPreludeMiscIdUnique 84
1507 zipPIdKey = mkPreludeMiscIdUnique 85
1508 crossMapPIdKey = mkPreludeMiscIdUnique 86
1509 indexPIdKey = mkPreludeMiscIdUnique 87
1510 toPIdKey = mkPreludeMiscIdUnique 88
1511 enumFromToPIdKey = mkPreludeMiscIdUnique 89
1512 enumFromThenToPIdKey = mkPreludeMiscIdUnique 90
1513 emptyPIdKey = mkPreludeMiscIdUnique 91
1514 appPIdKey = mkPreludeMiscIdUnique 92
1517 unmarshalObjectIdKey, marshalObjectIdKey, marshalStringIdKey,
1518 unmarshalStringIdKey, checkDotnetResNameIdKey :: Unique
1519 unmarshalObjectIdKey = mkPreludeMiscIdUnique 94
1520 marshalObjectIdKey = mkPreludeMiscIdUnique 95
1521 marshalStringIdKey = mkPreludeMiscIdUnique 96
1522 unmarshalStringIdKey = mkPreludeMiscIdUnique 97
1523 checkDotnetResNameIdKey = mkPreludeMiscIdUnique 98
1527 Certain class operations from Prelude classes. They get their own
1528 uniques so we can look them up easily when we want to conjure them up
1529 during type checking.
1532 -- Just a place holder for unbound variables produced by the renamer:
1533 unboundKey :: Unique
1534 unboundKey = mkPreludeMiscIdUnique 101
1536 fromIntegerClassOpKey, minusClassOpKey, fromRationalClassOpKey,
1537 enumFromClassOpKey, enumFromThenClassOpKey, enumFromToClassOpKey,
1538 enumFromThenToClassOpKey, eqClassOpKey, geClassOpKey, negateClassOpKey,
1539 failMClassOpKey, bindMClassOpKey, thenMClassOpKey, returnMClassOpKey,
1542 fromIntegerClassOpKey = mkPreludeMiscIdUnique 102
1543 minusClassOpKey = mkPreludeMiscIdUnique 103
1544 fromRationalClassOpKey = mkPreludeMiscIdUnique 104
1545 enumFromClassOpKey = mkPreludeMiscIdUnique 105
1546 enumFromThenClassOpKey = mkPreludeMiscIdUnique 106
1547 enumFromToClassOpKey = mkPreludeMiscIdUnique 107
1548 enumFromThenToClassOpKey = mkPreludeMiscIdUnique 108
1549 eqClassOpKey = mkPreludeMiscIdUnique 109
1550 geClassOpKey = mkPreludeMiscIdUnique 110
1551 negateClassOpKey = mkPreludeMiscIdUnique 111
1552 failMClassOpKey = mkPreludeMiscIdUnique 112
1553 bindMClassOpKey = mkPreludeMiscIdUnique 113 -- (>>=)
1554 thenMClassOpKey = mkPreludeMiscIdUnique 114 -- (>>)
1555 fmapClassOpKey = mkPreludeMiscIdUnique 115
1556 returnMClassOpKey = mkPreludeMiscIdUnique 117
1558 -- Recursive do notation
1560 mfixIdKey = mkPreludeMiscIdUnique 118
1563 arrAIdKey, composeAIdKey, firstAIdKey, appAIdKey, choiceAIdKey,
1564 loopAIdKey :: Unique
1565 arrAIdKey = mkPreludeMiscIdUnique 119
1566 composeAIdKey = mkPreludeMiscIdUnique 120 -- >>>
1567 firstAIdKey = mkPreludeMiscIdUnique 121
1568 appAIdKey = mkPreludeMiscIdUnique 122
1569 choiceAIdKey = mkPreludeMiscIdUnique 123 -- |||
1570 loopAIdKey = mkPreludeMiscIdUnique 124
1572 fromStringClassOpKey :: Unique
1573 fromStringClassOpKey = mkPreludeMiscIdUnique 125
1575 -- Annotation type checking
1576 toAnnotationWrapperIdKey :: Unique
1577 toAnnotationWrapperIdKey = mkPreludeMiscIdUnique 126
1579 -- Conversion functions
1580 fromIntegralIdKey, realToFracIdKey, toIntegerClassOpKey, toRationalClassOpKey :: Unique
1581 fromIntegralIdKey = mkPreludeMiscIdUnique 127
1582 realToFracIdKey = mkPreludeMiscIdUnique 128
1583 toIntegerClassOpKey = mkPreludeMiscIdUnique 129
1584 toRationalClassOpKey = mkPreludeMiscIdUnique 130
1586 -- Monad comprehensions
1587 guardMIdKey, liftMIdKey, groupMIdKey, mzipIdKey :: Unique
1588 guardMIdKey = mkPreludeMiscIdUnique 131
1589 liftMIdKey = mkPreludeMiscIdUnique 132
1590 groupMIdKey = mkPreludeMiscIdUnique 133
1591 mzipIdKey = mkPreludeMiscIdUnique 134
1594 hetMetCodeTypeTyConKey :: Unique
1595 hetMetCodeTypeTyConKey = mkPreludeTyConUnique 135
1597 hetmet_guest_integer_literal_key, hetmet_guest_string_literal_key, hetmet_guest_char_literal_key :: Unique
1598 hetmet_guest_integer_literal_key = mkPreludeMiscIdUnique 134
1599 hetmet_guest_string_literal_key = mkPreludeMiscIdUnique 135
1600 hetmet_guest_char_literal_key = mkPreludeMiscIdUnique 136
1601 hetmet_PGArrow_key :: Unique
1602 hetmet_PGArrow_key = mkPreludeMiscIdUnique 137
1603 hetmet_pga_id_key :: Unique
1604 hetmet_pga_id_key = mkPreludeMiscIdUnique 138
1605 hetmet_pga_comp_key :: Unique
1606 hetmet_pga_comp_key = mkPreludeMiscIdUnique 139
1607 hetmet_pga_first_key :: Unique
1608 hetmet_pga_first_key = mkPreludeMiscIdUnique 140
1609 hetmet_pga_second_key :: Unique
1610 hetmet_pga_second_key = mkPreludeMiscIdUnique 141
1611 hetmet_pga_cancell_key :: Unique
1612 hetmet_pga_cancell_key = mkPreludeMiscIdUnique 142
1613 hetmet_pga_cancelr_key :: Unique
1614 hetmet_pga_cancelr_key = mkPreludeMiscIdUnique 143
1615 hetmet_pga_uncancell_key :: Unique
1616 hetmet_pga_uncancell_key = mkPreludeMiscIdUnique 144
1617 hetmet_pga_uncancelr_key :: Unique
1618 hetmet_pga_uncancelr_key = mkPreludeMiscIdUnique 145
1619 hetmet_pga_assoc_key :: Unique
1620 hetmet_pga_assoc_key = mkPreludeMiscIdUnique 146
1621 hetmet_pga_unassoc_key :: Unique
1622 hetmet_pga_unassoc_key = mkPreludeMiscIdUnique 147
1623 hetmet_pga_copy_key :: Unique
1624 hetmet_pga_copy_key = mkPreludeMiscIdUnique 148
1625 hetmet_pga_drop_key :: Unique
1626 hetmet_pga_drop_key = mkPreludeMiscIdUnique 149
1627 hetmet_pga_swap_key :: Unique
1628 hetmet_pga_swap_key = mkPreludeMiscIdUnique 150
1629 hetmet_pga_applyl_key :: Unique
1630 hetmet_pga_applyl_key = mkPreludeMiscIdUnique 151
1631 hetmet_pga_applyr_key :: Unique
1632 hetmet_pga_applyr_key = mkPreludeMiscIdUnique 152
1633 hetmet_pga_curryl_key :: Unique
1634 hetmet_pga_curryl_key = mkPreludeMiscIdUnique 153
1635 hetmet_pga_curryr_key :: Unique
1636 hetmet_pga_curryr_key = mkPreludeMiscIdUnique 154
1637 hetmet_flatten_key = mkPreludeMiscIdUnique 155
1638 hetmet_unflatten_key = mkPreludeMiscIdUnique 156
1639 hetmet_flattened_id_key = mkPreludeMiscIdUnique 157
1640 hetmet_PGArrow_unit_key :: Unique
1641 hetmet_PGArrow_unit_key = mkPreludeMiscIdUnique 158
1642 hetmet_PGArrow_tensor_key :: Unique
1643 hetmet_PGArrow_tensor_key = mkPreludeMiscIdUnique 159
1644 hetmet_PGArrow_exponent_key :: Unique
1645 hetmet_PGArrow_exponent_key = mkPreludeMiscIdUnique 160
1647 hetmet_brak_key, hetmet_esc_key, hetmet_csp_key, hetmet_flatten_key, hetmet_unflatten_key, hetmet_flattened_id_key :: Unique
1648 hetmet_brak_key = mkPreludeMiscIdUnique 161
1649 hetmet_esc_key = mkPreludeMiscIdUnique 162
1650 hetmet_csp_key = mkPreludeMiscIdUnique 163
1652 hetmet_pga_loopl_key :: Unique
1653 hetmet_pga_loopl_key = mkPreludeMiscIdUnique 164
1654 hetmet_pga_loopr_key :: Unique
1655 hetmet_pga_loopr_key = mkPreludeMiscIdUnique 165
1658 ---------------- Template Haskell -------------------
1659 -- USES IdUniques 200-499
1660 -----------------------------------------------------
1664 %************************************************************************
1666 \subsection{Standard groups of types}
1668 %************************************************************************
1671 numericTyKeys :: [Unique]
1680 kindKeys :: [Unique]
1681 kindKeys = [ liftedTypeKindTyConKey
1682 , openTypeKindTyConKey
1683 , unliftedTypeKindTyConKey
1684 , ubxTupleKindTyConKey
1685 , argTypeKindTyConKey ]
1689 %************************************************************************
1691 \subsection[Class-std-groups]{Standard groups of Prelude classes}
1693 %************************************************************************
1695 NOTE: @Eq@ and @Text@ do need to appear in @standardClasses@
1696 even though every numeric class has these two as a superclass,
1697 because the list of ambiguous dictionaries hasn't been simplified.
1700 numericClassKeys :: [Unique]
1706 ++ fractionalClassKeys
1708 fractionalClassKeys :: [Unique]
1709 fractionalClassKeys =
1710 [ fractionalClassKey
1716 -- the strictness analyser needs to know about numeric types
1717 -- (see SaAbsInt.lhs)
1718 needsDataDeclCtxtClassKeys :: [Unique]
1719 needsDataDeclCtxtClassKeys = -- see comments in TcDeriv
1723 -- The "standard classes" are used in defaulting (Haskell 98 report 4.3.4),
1724 -- and are: "classes defined in the Prelude or a standard library"
1725 standardClassKeys :: [Unique]
1726 standardClassKeys = derivableClassKeys ++ numericClassKeys
1727 ++ [randomClassKey, randomGenClassKey,
1729 monadClassKey, monadPlusClassKey,
1731 applicativeClassKey, foldableClassKey, traversableClassKey
1735 @derivableClassKeys@ is also used in checking \tr{deriving} constructs
1739 derivableClassKeys :: [Unique]
1741 = [ eqClassKey, ordClassKey, enumClassKey, ixClassKey,
1742 boundedClassKey, showClassKey, readClassKey ]