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,
242 -- Annotation type checking
243 toAnnotationWrapperName
246 , eitherTyConName, leftDataConName, rightDataConName
249 , objectTyConName, marshalObjectName, unmarshalObjectName
250 , marshalStringName, unmarshalStringName, checkDotnetResName
253 , genClassName, gen1ClassName
254 , datatypeClassName, constructorClassName, selectorClassName
256 -- Monad comprehensions
263 genericTyConNames :: [Name]
264 genericTyConNames = [
265 v1TyConName, u1TyConName, par1TyConName, rec1TyConName,
266 k1TyConName, m1TyConName, sumTyConName, prodTyConName,
267 compTyConName, rTyConName, pTyConName, dTyConName,
268 cTyConName, sTyConName, rec0TyConName, par0TyConName,
269 d1TyConName, c1TyConName, s1TyConName, noSelTyConName,
270 repTyConName, rep1TyConName
273 -- Know names from the DPH package which vary depending on the selected DPH backend.
275 dphKnownKeyNames :: PackageId -> [Name]
276 dphKnownKeyNames dphPkg
279 -- Parallel array operations
280 nullPName, lengthPName, replicatePName, singletonPName, mapPName,
281 filterPName, zipPName, crossMapPName, indexPName,
282 toPName, emptyPName, appPName,
283 enumFromToPName, enumFromThenToPName
289 %************************************************************************
291 \subsection{Module names}
293 %************************************************************************
296 --MetaHaskell Extension Add a new module here
299 pRELUDE = mkBaseModule_ pRELUDE_NAME
301 gHC_PRIM, gHC_TYPES, gHC_UNIT, gHC_ORDERING, gHC_GENERICS,
303 gHC_CLASSES, gHC_BASE, gHC_ENUM, gHC_CSTRING,
304 gHC_SHOW, gHC_READ, gHC_NUM, gHC_INTEGER, gHC_INTEGER_TYPE, gHC_LIST,
305 gHC_HETMET_CODETYPES,
308 gHC_TUPLE, dATA_TUPLE, dATA_EITHER, dATA_STRING, dATA_FOLDABLE, dATA_TRAVERSABLE,
309 gHC_PACK, gHC_CONC, gHC_IO, gHC_IO_Exception,
310 gHC_ST, gHC_ARR, gHC_STABLE, gHC_ADDR, gHC_PTR, gHC_ERR, gHC_REAL,
311 gHC_FLOAT, gHC_TOP_HANDLER, sYSTEM_IO, dYNAMIC, tYPEABLE, gENERICS,
312 dOTNET, rEAD_PREC, lEX, gHC_INT, gHC_WORD, mONAD, mONAD_FIX, mONAD_GROUP, mONAD_ZIP,
313 aRROW, cONTROL_APPLICATIVE, gHC_DESUGAR, rANDOM, gHC_EXTS,
314 cONTROL_EXCEPTION_BASE :: Module
316 gHC_PRIM = mkPrimModule (fsLit "GHC.Prim") -- Primitive types and values
317 gHC_TYPES = mkPrimModule (fsLit "GHC.Types")
318 gHC_UNIT = mkPrimModule (fsLit "GHC.Unit")
319 gHC_ORDERING = mkPrimModule (fsLit "GHC.Ordering")
320 gHC_GENERICS = mkPrimModule (fsLit "GHC.Generics")
321 gHC_MAGIC = mkPrimModule (fsLit "GHC.Magic")
322 gHC_CSTRING = mkPrimModule (fsLit "GHC.CString")
324 gHC_CLASSES = mkBaseModule (fsLit "GHC.Classes")
325 gHC_BASE = mkBaseModule (fsLit "GHC.Base")
326 gHC_ENUM = mkBaseModule (fsLit "GHC.Enum")
327 gHC_SHOW = mkBaseModule (fsLit "GHC.Show")
328 gHC_READ = mkBaseModule (fsLit "GHC.Read")
329 gHC_NUM = mkBaseModule (fsLit "GHC.Num")
330 gHC_INTEGER = mkIntegerModule (fsLit "GHC.Integer")
331 gHC_INTEGER_TYPE= mkIntegerModule (fsLit "GHC.Integer.Type")
332 gHC_HETMET_CODETYPES = mkBaseModule (fsLit "GHC.HetMet.CodeTypes")
333 gHC_HETMET_PRIVATE = mkBaseModule (fsLit "GHC.HetMet.Private")
334 gHC_HETMET_GARROW = mkBaseModule (fsLit "GHC.HetMet.GArrow")
335 gHC_LIST = mkBaseModule (fsLit "GHC.List")
336 gHC_TUPLE = mkPrimModule (fsLit "GHC.Tuple")
337 dATA_TUPLE = mkBaseModule (fsLit "Data.Tuple")
338 dATA_EITHER = mkBaseModule (fsLit "Data.Either")
339 dATA_STRING = mkBaseModule (fsLit "Data.String")
340 dATA_FOLDABLE = mkBaseModule (fsLit "Data.Foldable")
341 dATA_TRAVERSABLE= mkBaseModule (fsLit "Data.Traversable")
342 gHC_PACK = mkBaseModule (fsLit "GHC.Pack")
343 gHC_CONC = mkBaseModule (fsLit "GHC.Conc")
344 gHC_IO = mkBaseModule (fsLit "GHC.IO")
345 gHC_IO_Exception = mkBaseModule (fsLit "GHC.IO.Exception")
346 gHC_ST = mkBaseModule (fsLit "GHC.ST")
347 gHC_ARR = mkBaseModule (fsLit "GHC.Arr")
348 gHC_STABLE = mkBaseModule (fsLit "GHC.Stable")
349 gHC_ADDR = mkBaseModule (fsLit "GHC.Addr")
350 gHC_PTR = mkBaseModule (fsLit "GHC.Ptr")
351 gHC_ERR = mkBaseModule (fsLit "GHC.Err")
352 gHC_REAL = mkBaseModule (fsLit "GHC.Real")
353 gHC_FLOAT = mkBaseModule (fsLit "GHC.Float")
354 gHC_TOP_HANDLER = mkBaseModule (fsLit "GHC.TopHandler")
355 sYSTEM_IO = mkBaseModule (fsLit "System.IO")
356 dYNAMIC = mkBaseModule (fsLit "Data.Dynamic")
357 tYPEABLE = mkBaseModule (fsLit "Data.Typeable")
358 gENERICS = mkBaseModule (fsLit "Data.Data")
359 dOTNET = mkBaseModule (fsLit "GHC.Dotnet")
360 rEAD_PREC = mkBaseModule (fsLit "Text.ParserCombinators.ReadPrec")
361 lEX = mkBaseModule (fsLit "Text.Read.Lex")
362 gHC_INT = mkBaseModule (fsLit "GHC.Int")
363 gHC_WORD = mkBaseModule (fsLit "GHC.Word")
364 mONAD = mkBaseModule (fsLit "Control.Monad")
365 mONAD_FIX = mkBaseModule (fsLit "Control.Monad.Fix")
366 mONAD_GROUP = mkBaseModule (fsLit "Control.Monad.Group")
367 mONAD_ZIP = mkBaseModule (fsLit "Control.Monad.Zip")
368 aRROW = mkBaseModule (fsLit "Control.Arrow")
369 cONTROL_APPLICATIVE = mkBaseModule (fsLit "Control.Applicative")
370 gHC_DESUGAR = mkBaseModule (fsLit "GHC.Desugar")
371 rANDOM = mkBaseModule (fsLit "System.Random")
372 gHC_EXTS = mkBaseModule (fsLit "GHC.Exts")
373 cONTROL_EXCEPTION_BASE = mkBaseModule (fsLit "Control.Exception.Base")
375 gHC_PARR :: PackageId -> Module
376 gHC_PARR pkg = mkModule pkg (mkModuleNameFS (fsLit "Data.Array.Parallel"))
379 gHC_PARR' = mkBaseModule (fsLit "GHC.PArr")
381 mAIN, rOOT_MAIN :: Module
382 mAIN = mkMainModule_ mAIN_NAME
383 rOOT_MAIN = mkMainModule (fsLit ":Main") -- Root module for initialisation
385 -- The ':xxx' makes a module name that the user can never
386 -- use himself. The z-encoding for ':' is "ZC", so the z-encoded
387 -- module name still starts with a capital letter, which keeps
388 -- the z-encoded version consistent.
389 iNTERACTIVE :: Module
390 iNTERACTIVE = mkMainModule (fsLit ":Interactive")
392 pRELUDE_NAME, mAIN_NAME :: ModuleName
393 pRELUDE_NAME = mkModuleNameFS (fsLit "Prelude")
394 mAIN_NAME = mkModuleNameFS (fsLit "Main")
396 mkPrimModule :: FastString -> Module
397 mkPrimModule m = mkModule primPackageId (mkModuleNameFS m)
399 mkIntegerModule :: FastString -> Module
400 mkIntegerModule m = mkModule integerPackageId (mkModuleNameFS m)
402 mkBaseModule :: FastString -> Module
403 mkBaseModule m = mkModule basePackageId (mkModuleNameFS m)
405 mkBaseModule_ :: ModuleName -> Module
406 mkBaseModule_ m = mkModule basePackageId m
408 mkMainModule :: FastString -> Module
409 mkMainModule m = mkModule mainPackageId (mkModuleNameFS m)
411 mkMainModule_ :: ModuleName -> Module
412 mkMainModule_ m = mkModule mainPackageId m
415 %************************************************************************
417 \subsection{Constructing the names of tuples
419 %************************************************************************
422 mkTupleModule :: Boxity -> Arity -> Module
423 mkTupleModule Boxed 0 = gHC_UNIT
424 mkTupleModule Boxed _ = gHC_TUPLE
425 mkTupleModule Unboxed _ = gHC_PRIM
429 %************************************************************************
433 %************************************************************************
436 main_RDR_Unqual :: RdrName
437 main_RDR_Unqual = mkUnqual varName (fsLit "main")
438 -- We definitely don't want an Orig RdrName, because
439 -- main might, in principle, be imported into module Main
441 forall_tv_RDR, dot_tv_RDR :: RdrName
442 forall_tv_RDR = mkUnqual tvName (fsLit "forall")
443 dot_tv_RDR = mkUnqual tvName (fsLit ".")
445 eq_RDR, ge_RDR, ne_RDR, le_RDR, lt_RDR, gt_RDR, compare_RDR,
446 ltTag_RDR, eqTag_RDR, gtTag_RDR :: RdrName
447 eq_RDR = nameRdrName eqName
448 ge_RDR = nameRdrName geName
449 ne_RDR = varQual_RDR gHC_CLASSES (fsLit "/=")
450 le_RDR = varQual_RDR gHC_CLASSES (fsLit "<=")
451 lt_RDR = varQual_RDR gHC_CLASSES (fsLit "<")
452 gt_RDR = varQual_RDR gHC_CLASSES (fsLit ">")
453 compare_RDR = varQual_RDR gHC_CLASSES (fsLit "compare")
454 ltTag_RDR = dataQual_RDR gHC_ORDERING (fsLit "LT")
455 eqTag_RDR = dataQual_RDR gHC_ORDERING (fsLit "EQ")
456 gtTag_RDR = dataQual_RDR gHC_ORDERING (fsLit "GT")
458 eqClass_RDR, numClass_RDR, ordClass_RDR, enumClass_RDR, monadClass_RDR
460 eqClass_RDR = nameRdrName eqClassName
461 numClass_RDR = nameRdrName numClassName
462 ordClass_RDR = nameRdrName ordClassName
463 enumClass_RDR = nameRdrName enumClassName
464 monadClass_RDR = nameRdrName monadClassName
466 map_RDR, append_RDR :: RdrName
467 map_RDR = varQual_RDR gHC_BASE (fsLit "map")
468 append_RDR = varQual_RDR gHC_BASE (fsLit "++")
470 foldr_RDR, build_RDR, returnM_RDR, bindM_RDR, failM_RDR :: RdrName
471 foldr_RDR = nameRdrName foldrName
472 build_RDR = nameRdrName buildName
473 returnM_RDR = nameRdrName returnMName
474 bindM_RDR = nameRdrName bindMName
475 failM_RDR = nameRdrName failMName
477 left_RDR, right_RDR :: RdrName
478 left_RDR = nameRdrName leftDataConName
479 right_RDR = nameRdrName rightDataConName
481 fromEnum_RDR, toEnum_RDR :: RdrName
482 fromEnum_RDR = varQual_RDR gHC_ENUM (fsLit "fromEnum")
483 toEnum_RDR = varQual_RDR gHC_ENUM (fsLit "toEnum")
485 enumFrom_RDR, enumFromTo_RDR, enumFromThen_RDR, enumFromThenTo_RDR :: RdrName
486 enumFrom_RDR = nameRdrName enumFromName
487 enumFromTo_RDR = nameRdrName enumFromToName
488 enumFromThen_RDR = nameRdrName enumFromThenName
489 enumFromThenTo_RDR = nameRdrName enumFromThenToName
491 ratioDataCon_RDR, plusInteger_RDR, timesInteger_RDR :: RdrName
492 ratioDataCon_RDR = nameRdrName ratioDataConName
493 plusInteger_RDR = nameRdrName plusIntegerName
494 timesInteger_RDR = nameRdrName timesIntegerName
496 ioDataCon_RDR :: RdrName
497 ioDataCon_RDR = nameRdrName ioDataConName
499 eqString_RDR, unpackCString_RDR, unpackCStringFoldr_RDR,
500 unpackCStringUtf8_RDR :: RdrName
501 eqString_RDR = nameRdrName eqStringName
502 unpackCString_RDR = nameRdrName unpackCStringName
503 unpackCStringFoldr_RDR = nameRdrName unpackCStringFoldrName
504 unpackCStringUtf8_RDR = nameRdrName unpackCStringUtf8Name
506 newStablePtr_RDR, wordDataCon_RDR :: RdrName
507 newStablePtr_RDR = nameRdrName newStablePtrName
508 wordDataCon_RDR = dataQual_RDR gHC_WORD (fsLit "W#")
510 bindIO_RDR, returnIO_RDR :: RdrName
511 bindIO_RDR = nameRdrName bindIOName
512 returnIO_RDR = nameRdrName returnIOName
514 fromInteger_RDR, fromRational_RDR, minus_RDR, times_RDR, plus_RDR :: RdrName
515 fromInteger_RDR = nameRdrName fromIntegerName
516 fromRational_RDR = nameRdrName fromRationalName
517 minus_RDR = nameRdrName minusName
518 times_RDR = varQual_RDR gHC_NUM (fsLit "*")
519 plus_RDR = varQual_RDR gHC_NUM (fsLit "+")
521 fromString_RDR :: RdrName
522 fromString_RDR = nameRdrName fromStringName
524 compose_RDR :: RdrName
525 compose_RDR = varQual_RDR gHC_BASE (fsLit ".")
527 not_RDR, getTag_RDR, succ_RDR, pred_RDR, minBound_RDR, maxBound_RDR,
528 and_RDR, range_RDR, inRange_RDR, index_RDR,
529 unsafeIndex_RDR, unsafeRangeSize_RDR :: RdrName
530 and_RDR = varQual_RDR gHC_CLASSES (fsLit "&&")
531 not_RDR = varQual_RDR gHC_CLASSES (fsLit "not")
532 getTag_RDR = varQual_RDR gHC_BASE (fsLit "getTag")
533 succ_RDR = varQual_RDR gHC_ENUM (fsLit "succ")
534 pred_RDR = varQual_RDR gHC_ENUM (fsLit "pred")
535 minBound_RDR = varQual_RDR gHC_ENUM (fsLit "minBound")
536 maxBound_RDR = varQual_RDR gHC_ENUM (fsLit "maxBound")
537 range_RDR = varQual_RDR gHC_ARR (fsLit "range")
538 inRange_RDR = varQual_RDR gHC_ARR (fsLit "inRange")
539 index_RDR = varQual_RDR gHC_ARR (fsLit "index")
540 unsafeIndex_RDR = varQual_RDR gHC_ARR (fsLit "unsafeIndex")
541 unsafeRangeSize_RDR = varQual_RDR gHC_ARR (fsLit "unsafeRangeSize")
543 readList_RDR, readListDefault_RDR, readListPrec_RDR, readListPrecDefault_RDR,
544 readPrec_RDR, parens_RDR, choose_RDR, lexP_RDR :: RdrName
545 readList_RDR = varQual_RDR gHC_READ (fsLit "readList")
546 readListDefault_RDR = varQual_RDR gHC_READ (fsLit "readListDefault")
547 readListPrec_RDR = varQual_RDR gHC_READ (fsLit "readListPrec")
548 readListPrecDefault_RDR = varQual_RDR gHC_READ (fsLit "readListPrecDefault")
549 readPrec_RDR = varQual_RDR gHC_READ (fsLit "readPrec")
550 parens_RDR = varQual_RDR gHC_READ (fsLit "parens")
551 choose_RDR = varQual_RDR gHC_READ (fsLit "choose")
552 lexP_RDR = varQual_RDR gHC_READ (fsLit "lexP")
554 punc_RDR, ident_RDR, symbol_RDR :: RdrName
555 punc_RDR = dataQual_RDR lEX (fsLit "Punc")
556 ident_RDR = dataQual_RDR lEX (fsLit "Ident")
557 symbol_RDR = dataQual_RDR lEX (fsLit "Symbol")
559 step_RDR, alt_RDR, reset_RDR, prec_RDR :: RdrName
560 step_RDR = varQual_RDR rEAD_PREC (fsLit "step")
561 alt_RDR = varQual_RDR rEAD_PREC (fsLit "+++")
562 reset_RDR = varQual_RDR rEAD_PREC (fsLit "reset")
563 prec_RDR = varQual_RDR rEAD_PREC (fsLit "prec")
565 showList_RDR, showList___RDR, showsPrec_RDR, showString_RDR,
566 showSpace_RDR, showParen_RDR :: RdrName
567 showList_RDR = varQual_RDR gHC_SHOW (fsLit "showList")
568 showList___RDR = varQual_RDR gHC_SHOW (fsLit "showList__")
569 showsPrec_RDR = varQual_RDR gHC_SHOW (fsLit "showsPrec")
570 showString_RDR = varQual_RDR gHC_SHOW (fsLit "showString")
571 showSpace_RDR = varQual_RDR gHC_SHOW (fsLit "showSpace")
572 showParen_RDR = varQual_RDR gHC_SHOW (fsLit "showParen")
574 typeOf_RDR, mkTypeRep_RDR, mkTyConRep_RDR :: RdrName
575 typeOf_RDR = varQual_RDR tYPEABLE (fsLit "typeOf")
576 mkTypeRep_RDR = varQual_RDR tYPEABLE (fsLit "mkTyConApp")
577 mkTyConRep_RDR = varQual_RDR tYPEABLE (fsLit "mkTyCon")
579 undefined_RDR :: RdrName
580 undefined_RDR = varQual_RDR gHC_ERR (fsLit "undefined")
583 error_RDR = varQual_RDR gHC_ERR (fsLit "error")
585 -- Old Generics (constructors and functions)
586 crossDataCon_RDR, inlDataCon_RDR, inrDataCon_RDR, genUnitDataCon_RDR :: RdrName
587 crossDataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit ":*:")
588 inlDataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "Inl")
589 inrDataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "Inr")
590 genUnitDataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "Unit")
592 -- Generics (constructors and functions)
593 u1DataCon_RDR, par1DataCon_RDR, rec1DataCon_RDR,
594 k1DataCon_RDR, m1DataCon_RDR, l1DataCon_RDR, r1DataCon_RDR,
595 prodDataCon_RDR, comp1DataCon_RDR, from_RDR, from1_RDR,
596 to_RDR, to1_RDR, datatypeName_RDR, moduleName_RDR, conName_RDR,
597 conFixity_RDR, conIsRecord_RDR,
598 noArityDataCon_RDR, arityDataCon_RDR, selName_RDR,
599 prefixDataCon_RDR, infixDataCon_RDR, leftAssocDataCon_RDR,
600 rightAssocDataCon_RDR, notAssocDataCon_RDR :: RdrName
602 u1DataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "U1")
603 par1DataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "Par1")
604 rec1DataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "Rec1")
605 k1DataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "K1")
606 m1DataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "M1")
608 l1DataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "L1")
609 r1DataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "R1")
611 prodDataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit ":*:")
612 comp1DataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "Comp1")
614 from_RDR = varQual_RDR gHC_GENERICS (fsLit "from")
615 from1_RDR = varQual_RDR gHC_GENERICS (fsLit "from1")
616 to_RDR = varQual_RDR gHC_GENERICS (fsLit "to")
617 to1_RDR = varQual_RDR gHC_GENERICS (fsLit "to1")
619 datatypeName_RDR = varQual_RDR gHC_GENERICS (fsLit "datatypeName")
620 moduleName_RDR = varQual_RDR gHC_GENERICS (fsLit "moduleName")
621 selName_RDR = varQual_RDR gHC_GENERICS (fsLit "selName")
622 conName_RDR = varQual_RDR gHC_GENERICS (fsLit "conName")
623 conFixity_RDR = varQual_RDR gHC_GENERICS (fsLit "conFixity")
624 conIsRecord_RDR = varQual_RDR gHC_GENERICS (fsLit "conIsRecord")
626 noArityDataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "NoArity")
627 arityDataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "Arity")
628 prefixDataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "Prefix")
629 infixDataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "Infix")
630 leftAssocDataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "LeftAssociative")
631 rightAssocDataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "RightAssociative")
632 notAssocDataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "NotAssociative")
635 fmap_RDR, pure_RDR, ap_RDR, foldable_foldr_RDR, traverse_RDR :: RdrName
636 fmap_RDR = varQual_RDR gHC_BASE (fsLit "fmap")
637 pure_RDR = varQual_RDR cONTROL_APPLICATIVE (fsLit "pure")
638 ap_RDR = varQual_RDR cONTROL_APPLICATIVE (fsLit "<*>")
639 foldable_foldr_RDR = varQual_RDR dATA_FOLDABLE (fsLit "foldr")
640 traverse_RDR = varQual_RDR dATA_TRAVERSABLE (fsLit "traverse")
642 ----------------------
643 varQual_RDR, tcQual_RDR, clsQual_RDR, dataQual_RDR
644 :: Module -> FastString -> RdrName
645 varQual_RDR mod str = mkOrig mod (mkOccNameFS varName str)
646 tcQual_RDR mod str = mkOrig mod (mkOccNameFS tcName str)
647 clsQual_RDR mod str = mkOrig mod (mkOccNameFS clsName str)
648 dataQual_RDR mod str = mkOrig mod (mkOccNameFS dataName str)
651 %************************************************************************
653 \subsection{Known-key names}
655 %************************************************************************
657 Many of these Names are not really "built in", but some parts of the
658 compiler (notably the deriving mechanism) need to mention their names,
659 and it's convenient to write them all down in one place.
661 --MetaHaskell Extension add the constrs and the lower case case
662 -- guys as well (perhaps) e.g. see trueDataConName below
667 wildCardName = mkSystemVarName wildCardKey (fsLit "wild")
669 runMainIOName :: Name
670 runMainIOName = varQual gHC_TOP_HANDLER (fsLit "runMainIO") runMainKey
672 orderingTyConName :: Name
673 orderingTyConName = tcQual gHC_ORDERING (fsLit "Ordering") orderingTyConKey
675 eitherTyConName, leftDataConName, rightDataConName :: Name
676 eitherTyConName = tcQual dATA_EITHER (fsLit "Either") eitherTyConKey
677 leftDataConName = conName dATA_EITHER (fsLit "Left") leftDataConKey
678 rightDataConName = conName dATA_EITHER (fsLit "Right") rightDataConKey
681 v1TyConName, u1TyConName, par1TyConName, rec1TyConName,
682 k1TyConName, m1TyConName, sumTyConName, prodTyConName,
683 compTyConName, rTyConName, pTyConName, dTyConName,
684 cTyConName, sTyConName, rec0TyConName, par0TyConName,
685 d1TyConName, c1TyConName, s1TyConName, noSelTyConName,
686 repTyConName, rep1TyConName :: Name
688 v1TyConName = tcQual gHC_GENERICS (fsLit "V1") v1TyConKey
689 u1TyConName = tcQual gHC_GENERICS (fsLit "U1") u1TyConKey
690 par1TyConName = tcQual gHC_GENERICS (fsLit "Par1") par1TyConKey
691 rec1TyConName = tcQual gHC_GENERICS (fsLit "Rec1") rec1TyConKey
692 k1TyConName = tcQual gHC_GENERICS (fsLit "K1") k1TyConKey
693 m1TyConName = tcQual gHC_GENERICS (fsLit "M1") m1TyConKey
695 sumTyConName = tcQual gHC_GENERICS (fsLit ":+:") sumTyConKey
696 prodTyConName = tcQual gHC_GENERICS (fsLit ":*:") prodTyConKey
697 compTyConName = tcQual gHC_GENERICS (fsLit ":.:") compTyConKey
699 rTyConName = tcQual gHC_GENERICS (fsLit "R") rTyConKey
700 pTyConName = tcQual gHC_GENERICS (fsLit "P") pTyConKey
701 dTyConName = tcQual gHC_GENERICS (fsLit "D") dTyConKey
702 cTyConName = tcQual gHC_GENERICS (fsLit "C") cTyConKey
703 sTyConName = tcQual gHC_GENERICS (fsLit "S") sTyConKey
705 rec0TyConName = tcQual gHC_GENERICS (fsLit "Rec0") rec0TyConKey
706 par0TyConName = tcQual gHC_GENERICS (fsLit "Par0") par0TyConKey
707 d1TyConName = tcQual gHC_GENERICS (fsLit "D1") d1TyConKey
708 c1TyConName = tcQual gHC_GENERICS (fsLit "C1") c1TyConKey
709 s1TyConName = tcQual gHC_GENERICS (fsLit "S1") s1TyConKey
710 noSelTyConName = tcQual gHC_GENERICS (fsLit "NoSelector") noSelTyConKey
712 repTyConName = tcQual gHC_GENERICS (fsLit "Rep") repTyConKey
713 rep1TyConName = tcQual gHC_GENERICS (fsLit "Rep1") rep1TyConKey
715 -- Base strings Strings
716 unpackCStringName, unpackCStringAppendName, unpackCStringFoldrName,
717 unpackCStringUtf8Name, eqStringName, stringTyConName :: Name
718 unpackCStringName = varQual gHC_CSTRING (fsLit "unpackCString#") unpackCStringIdKey
719 unpackCStringAppendName = varQual gHC_CSTRING (fsLit "unpackAppendCString#") unpackCStringAppendIdKey
720 unpackCStringFoldrName = varQual gHC_CSTRING (fsLit "unpackFoldrCString#") unpackCStringFoldrIdKey
721 unpackCStringUtf8Name = varQual gHC_CSTRING (fsLit "unpackCStringUtf8#") unpackCStringUtf8IdKey
722 eqStringName = varQual gHC_BASE (fsLit "eqString") eqStringIdKey
723 stringTyConName = tcQual gHC_BASE (fsLit "String") stringTyConKey
725 -- The 'inline' function
727 inlineIdName = varQual gHC_MAGIC (fsLit "inline") inlineIdKey
729 -- Base classes (Eq, Ord, Functor)
730 fmapName, eqClassName, eqName, ordClassName, geName, functorClassName :: Name
731 eqClassName = clsQual gHC_CLASSES (fsLit "Eq") eqClassKey
732 eqName = methName gHC_CLASSES (fsLit "==") eqClassOpKey
733 ordClassName = clsQual gHC_CLASSES (fsLit "Ord") ordClassKey
734 geName = methName gHC_CLASSES (fsLit ">=") geClassOpKey
735 functorClassName = clsQual gHC_BASE (fsLit "Functor") functorClassKey
736 fmapName = methName gHC_BASE (fsLit "fmap") fmapClassOpKey
739 monadClassName, thenMName, bindMName, returnMName, failMName :: Name
740 monadClassName = clsQual gHC_BASE (fsLit "Monad") monadClassKey
741 thenMName = methName gHC_BASE (fsLit ">>") thenMClassOpKey
742 bindMName = methName gHC_BASE (fsLit ">>=") bindMClassOpKey
743 returnMName = methName gHC_BASE (fsLit "return") returnMClassOpKey
744 failMName = methName gHC_BASE (fsLit "fail") failMClassOpKey
746 -- Classes (Applicative, Foldable, Traversable)
747 applicativeClassName, foldableClassName, traversableClassName :: Name
748 applicativeClassName = clsQual cONTROL_APPLICATIVE (fsLit "Applicative") applicativeClassKey
749 foldableClassName = clsQual dATA_FOLDABLE (fsLit "Foldable") foldableClassKey
750 traversableClassName = clsQual dATA_TRAVERSABLE (fsLit "Traversable") traversableClassKey
752 -- Functions for GHC extensions
753 groupWithName :: Name
754 groupWithName = varQual gHC_EXTS (fsLit "groupWith") groupWithIdKey
756 -- Random PrelBase functions
757 fromStringName, otherwiseIdName, foldrName, buildName, augmentName,
758 mapName, appendName, assertName,
759 breakpointName, breakpointCondName, breakpointAutoName,
760 dollarName, opaqueTyConName :: Name
761 fromStringName = methName dATA_STRING (fsLit "fromString") fromStringClassOpKey
762 otherwiseIdName = varQual gHC_BASE (fsLit "otherwise") otherwiseIdKey
763 foldrName = varQual gHC_BASE (fsLit "foldr") foldrIdKey
764 buildName = varQual gHC_BASE (fsLit "build") buildIdKey
765 augmentName = varQual gHC_BASE (fsLit "augment") augmentIdKey
766 mapName = varQual gHC_BASE (fsLit "map") mapIdKey
767 appendName = varQual gHC_BASE (fsLit "++") appendIdKey
768 dollarName = varQual gHC_BASE (fsLit "$") dollarIdKey
769 assertName = varQual gHC_BASE (fsLit "assert") assertIdKey
770 breakpointName = varQual gHC_BASE (fsLit "breakpoint") breakpointIdKey
771 breakpointCondName= varQual gHC_BASE (fsLit "breakpointCond") breakpointCondIdKey
772 breakpointAutoName= varQual gHC_BASE (fsLit "breakpointAuto") breakpointAutoIdKey
773 opaqueTyConName = tcQual gHC_BASE (fsLit "Opaque") opaqueTyConKey
775 breakpointJumpName :: Name
779 (mkOccNameFS varName (fsLit "breakpointJump"))
781 breakpointCondJumpName :: Name
782 breakpointCondJumpName
784 breakpointCondJumpIdKey
785 (mkOccNameFS varName (fsLit "breakpointCondJump"))
787 breakpointAutoJumpName :: Name
788 breakpointAutoJumpName
790 breakpointAutoJumpIdKey
791 (mkOccNameFS varName (fsLit "breakpointAutoJump"))
795 fstName, sndName :: Name
796 fstName = varQual dATA_TUPLE (fsLit "fst") fstIdKey
797 sndName = varQual dATA_TUPLE (fsLit "snd") sndIdKey
800 numClassName, fromIntegerName, minusName, negateName, plusIntegerName,
802 integerTyConName, smallIntegerName :: Name
803 numClassName = clsQual gHC_NUM (fsLit "Num") numClassKey
804 fromIntegerName = methName gHC_NUM (fsLit "fromInteger") fromIntegerClassOpKey
805 minusName = methName gHC_NUM (fsLit "-") minusClassOpKey
806 negateName = methName gHC_NUM (fsLit "negate") negateClassOpKey
807 plusIntegerName = varQual gHC_INTEGER (fsLit "plusInteger") plusIntegerIdKey
808 timesIntegerName = varQual gHC_INTEGER (fsLit "timesInteger") timesIntegerIdKey
809 integerTyConName = tcQual gHC_INTEGER_TYPE (fsLit "Integer") integerTyConKey
810 smallIntegerName = varQual gHC_INTEGER (fsLit "smallInteger") smallIntegerIdKey
812 -- GHC.Real types and classes
813 rationalTyConName, ratioTyConName, ratioDataConName, realClassName,
814 integralClassName, realFracClassName, fractionalClassName,
815 fromRationalName, toIntegerName, toRationalName, fromIntegralName,
816 realToFracName :: Name
817 rationalTyConName = tcQual gHC_REAL (fsLit "Rational") rationalTyConKey
818 ratioTyConName = tcQual gHC_REAL (fsLit "Ratio") ratioTyConKey
819 ratioDataConName = conName gHC_REAL (fsLit ":%") ratioDataConKey
820 realClassName = clsQual gHC_REAL (fsLit "Real") realClassKey
821 integralClassName = clsQual gHC_REAL (fsLit "Integral") integralClassKey
822 realFracClassName = clsQual gHC_REAL (fsLit "RealFrac") realFracClassKey
823 fractionalClassName = clsQual gHC_REAL (fsLit "Fractional") fractionalClassKey
824 fromRationalName = methName gHC_REAL (fsLit "fromRational") fromRationalClassOpKey
825 toIntegerName = methName gHC_REAL (fsLit "toInteger") toIntegerClassOpKey
826 toRationalName = methName gHC_REAL (fsLit "toRational") toRationalClassOpKey
827 fromIntegralName = varQual gHC_REAL (fsLit "fromIntegral") fromIntegralIdKey
828 realToFracName = varQual gHC_REAL (fsLit "realToFrac") realToFracIdKey
831 floatingClassName, realFloatClassName :: Name
832 floatingClassName = clsQual gHC_FLOAT (fsLit "Floating") floatingClassKey
833 realFloatClassName = clsQual gHC_FLOAT (fsLit "RealFloat") realFloatClassKey
837 ixClassName = clsQual gHC_ARR (fsLit "Ix") ixClassKey
840 typeableClassName, typeable1ClassName, typeable2ClassName,
841 typeable3ClassName, typeable4ClassName, typeable5ClassName,
842 typeable6ClassName, typeable7ClassName :: Name
843 typeableClassName = clsQual tYPEABLE (fsLit "Typeable") typeableClassKey
844 typeable1ClassName = clsQual tYPEABLE (fsLit "Typeable1") typeable1ClassKey
845 typeable2ClassName = clsQual tYPEABLE (fsLit "Typeable2") typeable2ClassKey
846 typeable3ClassName = clsQual tYPEABLE (fsLit "Typeable3") typeable3ClassKey
847 typeable4ClassName = clsQual tYPEABLE (fsLit "Typeable4") typeable4ClassKey
848 typeable5ClassName = clsQual tYPEABLE (fsLit "Typeable5") typeable5ClassKey
849 typeable6ClassName = clsQual tYPEABLE (fsLit "Typeable6") typeable6ClassKey
850 typeable7ClassName = clsQual tYPEABLE (fsLit "Typeable7") typeable7ClassKey
852 typeableClassNames :: [Name]
853 typeableClassNames = [ typeableClassName, typeable1ClassName, typeable2ClassName
854 , typeable3ClassName, typeable4ClassName, typeable5ClassName
855 , typeable6ClassName, typeable7ClassName ]
858 dataClassName :: Name
859 dataClassName = clsQual gENERICS (fsLit "Data") dataClassKey
862 assertErrorName :: Name
863 assertErrorName = varQual gHC_IO_Exception (fsLit "assertError") assertErrorIdKey
865 -- Enum module (Enum, Bounded)
866 enumClassName, enumFromName, enumFromToName, enumFromThenName,
867 enumFromThenToName, boundedClassName :: Name
868 enumClassName = clsQual gHC_ENUM (fsLit "Enum") enumClassKey
869 enumFromName = methName gHC_ENUM (fsLit "enumFrom") enumFromClassOpKey
870 enumFromToName = methName gHC_ENUM (fsLit "enumFromTo") enumFromToClassOpKey
871 enumFromThenName = methName gHC_ENUM (fsLit "enumFromThen") enumFromThenClassOpKey
872 enumFromThenToName = methName gHC_ENUM (fsLit "enumFromThenTo") enumFromThenToClassOpKey
873 boundedClassName = clsQual gHC_ENUM (fsLit "Bounded") boundedClassKey
876 concatName, filterName, zipName :: Name
877 concatName = varQual gHC_LIST (fsLit "concat") concatIdKey
878 filterName = varQual gHC_LIST (fsLit "filter") filterIdKey
879 zipName = varQual gHC_LIST (fsLit "zip") zipIdKey
882 showClassName :: Name
883 showClassName = clsQual gHC_SHOW (fsLit "Show") showClassKey
886 readClassName :: Name
887 readClassName = clsQual gHC_READ (fsLit "Read") readClassKey
889 -- Classes Generic and Generic1, Datatype, Constructor and Selector
890 genClassName, gen1ClassName, datatypeClassName, constructorClassName,
891 selectorClassName :: Name
892 genClassName = clsQual gHC_GENERICS (fsLit "Generic") genClassKey
893 gen1ClassName = clsQual gHC_GENERICS (fsLit "Generic1") gen1ClassKey
895 datatypeClassName = clsQual gHC_GENERICS (fsLit "Datatype") datatypeClassKey
896 constructorClassName = clsQual gHC_GENERICS (fsLit "Constructor") constructorClassKey
897 selectorClassName = clsQual gHC_GENERICS (fsLit "Selector") selectorClassKey
899 -- parallel array types and functions
900 enumFromToPName, enumFromThenToPName, nullPName, lengthPName,
901 singletonPName, replicatePName, mapPName, filterPName,
902 zipPName, crossMapPName, indexPName, toPName,
903 emptyPName, appPName :: PackageId -> Name
904 enumFromToPName pkg = varQual (gHC_PARR pkg) (fsLit "enumFromToP") enumFromToPIdKey
905 enumFromThenToPName pkg = varQual (gHC_PARR pkg) (fsLit "enumFromThenToP") enumFromThenToPIdKey
906 nullPName pkg = varQual (gHC_PARR pkg) (fsLit "nullP") nullPIdKey
907 lengthPName pkg = varQual (gHC_PARR pkg) (fsLit "lengthP") lengthPIdKey
908 singletonPName pkg = varQual (gHC_PARR pkg) (fsLit "singletonP") singletonPIdKey
909 replicatePName pkg = varQual (gHC_PARR pkg) (fsLit "replicateP") replicatePIdKey
910 mapPName pkg = varQual (gHC_PARR pkg) (fsLit "mapP") mapPIdKey
911 filterPName pkg = varQual (gHC_PARR pkg) (fsLit "filterP") filterPIdKey
912 zipPName pkg = varQual (gHC_PARR pkg) (fsLit "zipP") zipPIdKey
913 crossMapPName pkg = varQual (gHC_PARR pkg) (fsLit "crossMapP") crossMapPIdKey
914 indexPName pkg = varQual (gHC_PARR pkg) (fsLit "!:") indexPIdKey
915 toPName pkg = varQual (gHC_PARR pkg) (fsLit "toP") toPIdKey
916 emptyPName pkg = varQual (gHC_PARR pkg) (fsLit "emptyP") emptyPIdKey
917 appPName pkg = varQual (gHC_PARR pkg) (fsLit "+:+") appPIdKey
920 hetmet_brak_name, hetmet_esc_name, hetmet_csp_name, hetmet_flatten_name, hetmet_unflatten_name, hetmet_flattened_id_name :: Name
921 hetmet_guest_integer_literal_name, hetmet_guest_string_literal_name, hetmet_guest_char_literal_name :: Name
922 hetmet_brak_name = varQual gHC_HETMET_CODETYPES (fsLit "hetmet_brak") hetmet_brak_key
923 hetmet_esc_name = varQual gHC_HETMET_CODETYPES (fsLit "hetmet_esc") hetmet_esc_key
924 hetmet_csp_name = varQual gHC_HETMET_CODETYPES (fsLit "hetmet_csp") hetmet_csp_key
925 hetmet_flatten_name = varQual gHC_HETMET_CODETYPES (fsLit "pga_flatten") hetmet_flatten_key
926 hetmet_unflatten_name = varQual gHC_HETMET_CODETYPES (fsLit "pga_unflatten") hetmet_unflatten_key
927 hetmet_flattened_id_name = varQual gHC_HETMET_CODETYPES (fsLit "pga_flattened_id") hetmet_flattened_id_key
928 hetmet_guest_integer_literal_name = varQual gHC_HETMET_CODETYPES (fsLit "guestIntegerLiteral") hetmet_guest_integer_literal_key
929 hetmet_guest_string_literal_name = varQual gHC_HETMET_CODETYPES (fsLit "guestStringLiteral") hetmet_guest_string_literal_key
930 hetmet_guest_char_literal_name = varQual gHC_HETMET_CODETYPES (fsLit "guestCharLiteral") hetmet_guest_char_literal_key
932 hetmet_PGArrow_name :: Name
933 hetmet_PGArrow_name = tcQual gHC_HETMET_PRIVATE (fsLit "PGArrow") hetmet_PGArrow_key
934 hetmet_PGArrow_unit_name :: Name
935 hetmet_PGArrow_unit_name = tcQual gHC_HETMET_GARROW (fsLit "GArrowUnit") hetmet_PGArrow_unit_key
936 hetmet_PGArrow_tensor_name :: Name
937 hetmet_PGArrow_tensor_name = tcQual gHC_HETMET_GARROW (fsLit "GArrowTensor") hetmet_PGArrow_tensor_key
938 hetmet_PGArrow_exponent_name :: Name
939 hetmet_PGArrow_exponent_name = tcQual gHC_HETMET_GARROW (fsLit "GArrowExponent") hetmet_PGArrow_exponent_key
940 hetmet_pga_id_name :: Name
941 hetmet_pga_id_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_id") hetmet_pga_id_key
942 hetmet_pga_comp_name :: Name
943 hetmet_pga_comp_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_comp") hetmet_pga_comp_key
944 hetmet_pga_first_name :: Name
945 hetmet_pga_first_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_first") hetmet_pga_first_key
946 hetmet_pga_second_name :: Name
947 hetmet_pga_second_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_second") hetmet_pga_second_key
948 hetmet_pga_cancell_name :: Name
949 hetmet_pga_cancell_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_cancell") hetmet_pga_cancell_key
950 hetmet_pga_cancelr_name :: Name
951 hetmet_pga_cancelr_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_cancelr") hetmet_pga_cancelr_key
952 hetmet_pga_uncancell_name :: Name
953 hetmet_pga_uncancell_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_uncancell") hetmet_pga_uncancell_key
954 hetmet_pga_uncancelr_name :: Name
955 hetmet_pga_uncancelr_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_uncancelr") hetmet_pga_uncancelr_key
956 hetmet_pga_assoc_name :: Name
957 hetmet_pga_assoc_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_assoc") hetmet_pga_assoc_key
958 hetmet_pga_unassoc_name :: Name
959 hetmet_pga_unassoc_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_unassoc") hetmet_pga_unassoc_key
960 hetmet_pga_copy_name :: Name
961 hetmet_pga_copy_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_copy") hetmet_pga_copy_key
962 hetmet_pga_drop_name :: Name
963 hetmet_pga_drop_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_drop") hetmet_pga_drop_key
964 hetmet_pga_swap_name :: Name
965 hetmet_pga_swap_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_swap") hetmet_pga_swap_key
966 hetmet_pga_applyl_name :: Name
967 hetmet_pga_applyl_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_applyl") hetmet_pga_applyl_key
968 hetmet_pga_applyr_name :: Name
969 hetmet_pga_applyr_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_applyr") hetmet_pga_applyr_key
970 hetmet_pga_curryl_name :: Name
971 hetmet_pga_curryl_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_curryl") hetmet_pga_curryl_key
972 hetmet_pga_curryr_name :: Name
973 hetmet_pga_curryr_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_curryr") hetmet_pga_curryr_key
976 ioTyConName, ioDataConName, thenIOName, bindIOName, returnIOName,
978 ioTyConName = tcQual gHC_TYPES (fsLit "IO") ioTyConKey
979 ioDataConName = conName gHC_TYPES (fsLit "IO") ioDataConKey
980 thenIOName = varQual gHC_BASE (fsLit "thenIO") thenIOIdKey
981 bindIOName = varQual gHC_BASE (fsLit "bindIO") bindIOIdKey
982 returnIOName = varQual gHC_BASE (fsLit "returnIO") returnIOIdKey
983 failIOName = varQual gHC_IO (fsLit "failIO") failIOIdKey
987 printName = varQual sYSTEM_IO (fsLit "print") printIdKey
989 -- Int, Word, and Addr things
990 int8TyConName, int16TyConName, int32TyConName, int64TyConName :: Name
991 int8TyConName = tcQual gHC_INT (fsLit "Int8") int8TyConKey
992 int16TyConName = tcQual gHC_INT (fsLit "Int16") int16TyConKey
993 int32TyConName = tcQual gHC_INT (fsLit "Int32") int32TyConKey
994 int64TyConName = tcQual gHC_INT (fsLit "Int64") int64TyConKey
997 word8TyConName, word16TyConName, word32TyConName, word64TyConName,
998 wordTyConName, wordDataConName :: Name
999 word8TyConName = tcQual gHC_WORD (fsLit "Word8") word8TyConKey
1000 word16TyConName = tcQual gHC_WORD (fsLit "Word16") word16TyConKey
1001 word32TyConName = tcQual gHC_WORD (fsLit "Word32") word32TyConKey
1002 word64TyConName = tcQual gHC_WORD (fsLit "Word64") word64TyConKey
1003 wordTyConName = tcQual gHC_WORD (fsLit "Word") wordTyConKey
1004 wordDataConName = conName gHC_WORD (fsLit "W#") wordDataConKey
1007 ptrTyConName, funPtrTyConName :: Name
1008 ptrTyConName = tcQual gHC_PTR (fsLit "Ptr") ptrTyConKey
1009 funPtrTyConName = tcQual gHC_PTR (fsLit "FunPtr") funPtrTyConKey
1011 -- Foreign objects and weak pointers
1012 stablePtrTyConName, newStablePtrName :: Name
1013 stablePtrTyConName = tcQual gHC_STABLE (fsLit "StablePtr") stablePtrTyConKey
1014 newStablePtrName = varQual gHC_STABLE (fsLit "newStablePtr") newStablePtrIdKey
1017 runSTRepName :: Name
1018 runSTRepName = varQual gHC_ST (fsLit "runSTRep") runSTRepIdKey
1020 -- Recursive-do notation
1021 monadFixClassName, mfixName :: Name
1022 monadFixClassName = clsQual mONAD_FIX (fsLit "MonadFix") monadFixClassKey
1023 mfixName = methName mONAD_FIX (fsLit "mfix") mfixIdKey
1026 arrAName, composeAName, firstAName, appAName, choiceAName, loopAName :: Name
1027 arrAName = varQual aRROW (fsLit "arr") arrAIdKey
1028 composeAName = varQual gHC_DESUGAR (fsLit ">>>") composeAIdKey
1029 firstAName = varQual aRROW (fsLit "first") firstAIdKey
1030 appAName = varQual aRROW (fsLit "app") appAIdKey
1031 choiceAName = varQual aRROW (fsLit "|||") choiceAIdKey
1032 loopAName = varQual aRROW (fsLit "loop") loopAIdKey
1034 -- Monad comprehensions
1035 guardMName, liftMName, groupMName, mzipName :: Name
1036 guardMName = varQual mONAD (fsLit "guard") guardMIdKey
1037 liftMName = varQual mONAD (fsLit "liftM") liftMIdKey
1038 groupMName = varQual mONAD_GROUP (fsLit "mgroupWith") groupMIdKey
1039 mzipName = varQual mONAD_ZIP (fsLit "mzip") mzipIdKey
1042 -- Annotation type checking
1043 toAnnotationWrapperName :: Name
1044 toAnnotationWrapperName = varQual gHC_DESUGAR (fsLit "toAnnotationWrapper") toAnnotationWrapperIdKey
1046 -- Other classes, needed for type defaulting
1047 monadPlusClassName, randomClassName, randomGenClassName,
1048 isStringClassName :: Name
1049 monadPlusClassName = clsQual mONAD (fsLit "MonadPlus") monadPlusClassKey
1050 randomClassName = clsQual rANDOM (fsLit "Random") randomClassKey
1051 randomGenClassName = clsQual rANDOM (fsLit "RandomGen") randomGenClassKey
1052 isStringClassName = clsQual dATA_STRING (fsLit "IsString") isStringClassKey
1055 objectTyConName :: Name
1056 objectTyConName = tcQual dOTNET (fsLit "Object") objectTyConKey
1057 -- objectTyConName was "wTcQual", but that's gone now, and
1058 -- I can't see why it was wired in anyway...
1059 unmarshalObjectName, marshalObjectName, marshalStringName,
1060 unmarshalStringName, checkDotnetResName :: Name
1061 unmarshalObjectName = varQual dOTNET (fsLit "unmarshalObject") unmarshalObjectIdKey
1062 marshalObjectName = varQual dOTNET (fsLit "marshalObject") marshalObjectIdKey
1063 marshalStringName = varQual dOTNET (fsLit "marshalString") marshalStringIdKey
1064 unmarshalStringName = varQual dOTNET (fsLit "unmarshalString") unmarshalStringIdKey
1065 checkDotnetResName = varQual dOTNET (fsLit "checkResult") checkDotnetResNameIdKey
1068 %************************************************************************
1070 \subsection{Local helpers}
1072 %************************************************************************
1074 All these are original names; hence mkOrig
1077 varQual, tcQual, clsQual :: Module -> FastString -> Unique -> Name
1078 varQual = mk_known_key_name varName
1079 tcQual = mk_known_key_name tcName
1080 clsQual = mk_known_key_name clsName
1082 mk_known_key_name :: NameSpace -> Module -> FastString -> Unique -> Name
1083 mk_known_key_name space modu str unique
1084 = mkExternalName unique modu (mkOccNameFS space str) noSrcSpan
1086 conName :: Module -> FastString -> Unique -> Name
1087 conName modu occ unique
1088 = mkExternalName unique modu (mkOccNameFS dataName occ) noSrcSpan
1090 methName :: Module -> FastString -> Unique -> Name
1091 methName modu occ unique
1092 = mkExternalName unique modu (mkVarOccFS occ) noSrcSpan
1095 %************************************************************************
1097 \subsubsection[Uniques-prelude-Classes]{@Uniques@ for wired-in @Classes@}
1099 %************************************************************************
1100 --MetaHaskell extension hand allocate keys here
1103 boundedClassKey, enumClassKey, eqClassKey, floatingClassKey,
1104 fractionalClassKey, integralClassKey, monadClassKey, dataClassKey,
1105 functorClassKey, numClassKey, ordClassKey, readClassKey, realClassKey,
1106 realFloatClassKey, realFracClassKey, showClassKey, ixClassKey :: Unique
1107 boundedClassKey = mkPreludeClassUnique 1
1108 enumClassKey = mkPreludeClassUnique 2
1109 eqClassKey = mkPreludeClassUnique 3
1110 floatingClassKey = mkPreludeClassUnique 5
1111 fractionalClassKey = mkPreludeClassUnique 6
1112 integralClassKey = mkPreludeClassUnique 7
1113 monadClassKey = mkPreludeClassUnique 8
1114 dataClassKey = mkPreludeClassUnique 9
1115 functorClassKey = mkPreludeClassUnique 10
1116 numClassKey = mkPreludeClassUnique 11
1117 ordClassKey = mkPreludeClassUnique 12
1118 readClassKey = mkPreludeClassUnique 13
1119 realClassKey = mkPreludeClassUnique 14
1120 realFloatClassKey = mkPreludeClassUnique 15
1121 realFracClassKey = mkPreludeClassUnique 16
1122 showClassKey = mkPreludeClassUnique 17
1123 ixClassKey = mkPreludeClassUnique 18
1125 typeableClassKey, typeable1ClassKey, typeable2ClassKey, typeable3ClassKey,
1126 typeable4ClassKey, typeable5ClassKey, typeable6ClassKey, typeable7ClassKey
1128 typeableClassKey = mkPreludeClassUnique 20
1129 typeable1ClassKey = mkPreludeClassUnique 21
1130 typeable2ClassKey = mkPreludeClassUnique 22
1131 typeable3ClassKey = mkPreludeClassUnique 23
1132 typeable4ClassKey = mkPreludeClassUnique 24
1133 typeable5ClassKey = mkPreludeClassUnique 25
1134 typeable6ClassKey = mkPreludeClassUnique 26
1135 typeable7ClassKey = mkPreludeClassUnique 27
1137 monadFixClassKey :: Unique
1138 monadFixClassKey = mkPreludeClassUnique 28
1140 monadPlusClassKey, randomClassKey, randomGenClassKey :: Unique
1141 monadPlusClassKey = mkPreludeClassUnique 30
1142 randomClassKey = mkPreludeClassUnique 31
1143 randomGenClassKey = mkPreludeClassUnique 32
1145 isStringClassKey :: Unique
1146 isStringClassKey = mkPreludeClassUnique 33
1148 applicativeClassKey, foldableClassKey, traversableClassKey :: Unique
1149 applicativeClassKey = mkPreludeClassUnique 34
1150 foldableClassKey = mkPreludeClassUnique 35
1151 traversableClassKey = mkPreludeClassUnique 36
1153 genClassKey, gen1ClassKey, datatypeClassKey, constructorClassKey,
1154 selectorClassKey :: Unique
1155 genClassKey = mkPreludeClassUnique 37
1156 gen1ClassKey = mkPreludeClassUnique 38
1158 datatypeClassKey = mkPreludeClassUnique 39
1159 constructorClassKey = mkPreludeClassUnique 40
1160 selectorClassKey = mkPreludeClassUnique 41
1163 %************************************************************************
1165 \subsubsection[Uniques-prelude-TyCons]{@Uniques@ for wired-in @TyCons@}
1167 %************************************************************************
1170 addrPrimTyConKey, arrayPrimTyConKey, boolTyConKey, byteArrayPrimTyConKey,
1171 charPrimTyConKey, charTyConKey, doublePrimTyConKey, doubleTyConKey,
1172 floatPrimTyConKey, floatTyConKey, funTyConKey, intPrimTyConKey,
1173 intTyConKey, int8TyConKey, int16TyConKey, int32PrimTyConKey,
1174 int32TyConKey, int64PrimTyConKey, int64TyConKey, integerTyConKey,
1175 listTyConKey, foreignObjPrimTyConKey, weakPrimTyConKey,
1176 mutableArrayPrimTyConKey, mutableByteArrayPrimTyConKey,
1177 orderingTyConKey, mVarPrimTyConKey, ratioTyConKey, rationalTyConKey,
1178 realWorldTyConKey, stablePtrPrimTyConKey, stablePtrTyConKey,
1179 anyTyConKey :: Unique
1180 addrPrimTyConKey = mkPreludeTyConUnique 1
1181 arrayPrimTyConKey = mkPreludeTyConUnique 3
1182 boolTyConKey = mkPreludeTyConUnique 4
1183 byteArrayPrimTyConKey = mkPreludeTyConUnique 5
1184 charPrimTyConKey = mkPreludeTyConUnique 7
1185 charTyConKey = mkPreludeTyConUnique 8
1186 doublePrimTyConKey = mkPreludeTyConUnique 9
1187 doubleTyConKey = mkPreludeTyConUnique 10
1188 floatPrimTyConKey = mkPreludeTyConUnique 11
1189 floatTyConKey = mkPreludeTyConUnique 12
1190 funTyConKey = mkPreludeTyConUnique 13
1191 intPrimTyConKey = mkPreludeTyConUnique 14
1192 intTyConKey = mkPreludeTyConUnique 15
1193 int8TyConKey = mkPreludeTyConUnique 16
1194 int16TyConKey = mkPreludeTyConUnique 17
1195 int32PrimTyConKey = mkPreludeTyConUnique 18
1196 int32TyConKey = mkPreludeTyConUnique 19
1197 int64PrimTyConKey = mkPreludeTyConUnique 20
1198 int64TyConKey = mkPreludeTyConUnique 21
1199 integerTyConKey = mkPreludeTyConUnique 22
1200 listTyConKey = mkPreludeTyConUnique 23
1201 foreignObjPrimTyConKey = mkPreludeTyConUnique 24
1202 weakPrimTyConKey = mkPreludeTyConUnique 27
1203 mutableArrayPrimTyConKey = mkPreludeTyConUnique 28
1204 mutableByteArrayPrimTyConKey = mkPreludeTyConUnique 29
1205 orderingTyConKey = mkPreludeTyConUnique 30
1206 mVarPrimTyConKey = mkPreludeTyConUnique 31
1207 ratioTyConKey = mkPreludeTyConUnique 32
1208 rationalTyConKey = mkPreludeTyConUnique 33
1209 realWorldTyConKey = mkPreludeTyConUnique 34
1210 stablePtrPrimTyConKey = mkPreludeTyConUnique 35
1211 stablePtrTyConKey = mkPreludeTyConUnique 36
1212 anyTyConKey = mkPreludeTyConUnique 37
1214 statePrimTyConKey, stableNamePrimTyConKey, stableNameTyConKey,
1215 mutVarPrimTyConKey, ioTyConKey,
1216 wordPrimTyConKey, wordTyConKey, word8TyConKey, word16TyConKey,
1217 word32PrimTyConKey, word32TyConKey, word64PrimTyConKey, word64TyConKey,
1218 liftedConKey, unliftedConKey, anyBoxConKey, kindConKey, boxityConKey,
1219 typeConKey, threadIdPrimTyConKey, bcoPrimTyConKey, ptrTyConKey,
1220 funPtrTyConKey, tVarPrimTyConKey, eqPredPrimTyConKey :: Unique
1221 statePrimTyConKey = mkPreludeTyConUnique 50
1222 stableNamePrimTyConKey = mkPreludeTyConUnique 51
1223 stableNameTyConKey = mkPreludeTyConUnique 52
1224 eqPredPrimTyConKey = mkPreludeTyConUnique 53
1225 mutVarPrimTyConKey = mkPreludeTyConUnique 55
1226 ioTyConKey = mkPreludeTyConUnique 56
1227 wordPrimTyConKey = mkPreludeTyConUnique 58
1228 wordTyConKey = mkPreludeTyConUnique 59
1229 word8TyConKey = mkPreludeTyConUnique 60
1230 word16TyConKey = mkPreludeTyConUnique 61
1231 word32PrimTyConKey = mkPreludeTyConUnique 62
1232 word32TyConKey = mkPreludeTyConUnique 63
1233 word64PrimTyConKey = mkPreludeTyConUnique 64
1234 word64TyConKey = mkPreludeTyConUnique 65
1235 liftedConKey = mkPreludeTyConUnique 66
1236 unliftedConKey = mkPreludeTyConUnique 67
1237 anyBoxConKey = mkPreludeTyConUnique 68
1238 kindConKey = mkPreludeTyConUnique 69
1239 boxityConKey = mkPreludeTyConUnique 70
1240 typeConKey = mkPreludeTyConUnique 71
1241 threadIdPrimTyConKey = mkPreludeTyConUnique 72
1242 bcoPrimTyConKey = mkPreludeTyConUnique 73
1243 ptrTyConKey = mkPreludeTyConUnique 74
1244 funPtrTyConKey = mkPreludeTyConUnique 75
1245 tVarPrimTyConKey = mkPreludeTyConUnique 76
1247 -- Parallel array type constructor
1248 parrTyConKey :: Unique
1249 parrTyConKey = mkPreludeTyConUnique 82
1252 objectTyConKey :: Unique
1253 objectTyConKey = mkPreludeTyConUnique 83
1255 eitherTyConKey :: Unique
1256 eitherTyConKey = mkPreludeTyConUnique 84
1258 -- Super Kinds constructors
1259 tySuperKindTyConKey :: Unique
1260 tySuperKindTyConKey = mkPreludeTyConUnique 85
1262 -- Kind constructors
1263 liftedTypeKindTyConKey, openTypeKindTyConKey, unliftedTypeKindTyConKey,
1264 ubxTupleKindTyConKey, argTypeKindTyConKey :: Unique
1265 liftedTypeKindTyConKey = mkPreludeTyConUnique 87
1266 openTypeKindTyConKey = mkPreludeTyConUnique 88
1267 unliftedTypeKindTyConKey = mkPreludeTyConUnique 89
1268 ubxTupleKindTyConKey = mkPreludeTyConUnique 90
1269 argTypeKindTyConKey = mkPreludeTyConUnique 91
1271 -- Coercion constructors
1272 symCoercionTyConKey, transCoercionTyConKey, leftCoercionTyConKey,
1273 rightCoercionTyConKey, instCoercionTyConKey, unsafeCoercionTyConKey,
1274 csel1CoercionTyConKey, csel2CoercionTyConKey, cselRCoercionTyConKey
1276 symCoercionTyConKey = mkPreludeTyConUnique 93
1277 transCoercionTyConKey = mkPreludeTyConUnique 94
1278 leftCoercionTyConKey = mkPreludeTyConUnique 95
1279 rightCoercionTyConKey = mkPreludeTyConUnique 96
1280 instCoercionTyConKey = mkPreludeTyConUnique 97
1281 unsafeCoercionTyConKey = mkPreludeTyConUnique 98
1282 csel1CoercionTyConKey = mkPreludeTyConUnique 99
1283 csel2CoercionTyConKey = mkPreludeTyConUnique 100
1284 cselRCoercionTyConKey = mkPreludeTyConUnique 101
1286 unknownTyConKey, unknown1TyConKey, unknown2TyConKey, unknown3TyConKey,
1287 opaqueTyConKey :: Unique
1288 unknownTyConKey = mkPreludeTyConUnique 129
1289 unknown1TyConKey = mkPreludeTyConUnique 130
1290 unknown2TyConKey = mkPreludeTyConUnique 131
1291 unknown3TyConKey = mkPreludeTyConUnique 132
1292 opaqueTyConKey = mkPreludeTyConUnique 133
1294 stringTyConKey :: Unique
1295 stringTyConKey = mkPreludeTyConUnique 134
1297 -- Generics (Unique keys)
1298 v1TyConKey, u1TyConKey, par1TyConKey, rec1TyConKey,
1299 k1TyConKey, m1TyConKey, sumTyConKey, prodTyConKey,
1300 compTyConKey, rTyConKey, pTyConKey, dTyConKey,
1301 cTyConKey, sTyConKey, rec0TyConKey, par0TyConKey,
1302 d1TyConKey, c1TyConKey, s1TyConKey, noSelTyConKey,
1303 repTyConKey, rep1TyConKey :: Unique
1305 v1TyConKey = mkPreludeTyConUnique 135
1306 u1TyConKey = mkPreludeTyConUnique 136
1307 par1TyConKey = mkPreludeTyConUnique 137
1308 rec1TyConKey = mkPreludeTyConUnique 138
1309 k1TyConKey = mkPreludeTyConUnique 139
1310 m1TyConKey = mkPreludeTyConUnique 140
1312 sumTyConKey = mkPreludeTyConUnique 141
1313 prodTyConKey = mkPreludeTyConUnique 142
1314 compTyConKey = mkPreludeTyConUnique 143
1316 rTyConKey = mkPreludeTyConUnique 144
1317 pTyConKey = mkPreludeTyConUnique 145
1318 dTyConKey = mkPreludeTyConUnique 146
1319 cTyConKey = mkPreludeTyConUnique 147
1320 sTyConKey = mkPreludeTyConUnique 148
1322 rec0TyConKey = mkPreludeTyConUnique 149
1323 par0TyConKey = mkPreludeTyConUnique 150
1324 d1TyConKey = mkPreludeTyConUnique 151
1325 c1TyConKey = mkPreludeTyConUnique 152
1326 s1TyConKey = mkPreludeTyConUnique 153
1327 noSelTyConKey = mkPreludeTyConUnique 154
1329 repTyConKey = mkPreludeTyConUnique 155
1330 rep1TyConKey = mkPreludeTyConUnique 156
1331 >>>>>>> 18691d440f90a3dff4ef538091c886af505e5cf5
1333 ---------------- Template Haskell -------------------
1334 -- USES TyConUniques 200-299
1335 -----------------------------------------------------
1337 unitTyConKey :: Unique
1338 unitTyConKey = mkTupleTyConUnique Boxed 0
1341 %************************************************************************
1343 \subsubsection[Uniques-prelude-DataCons]{@Uniques@ for wired-in @DataCons@}
1345 %************************************************************************
1348 charDataConKey, consDataConKey, doubleDataConKey, falseDataConKey,
1349 floatDataConKey, intDataConKey, nilDataConKey, ratioDataConKey,
1350 stableNameDataConKey, trueDataConKey, wordDataConKey,
1351 ioDataConKey, integerDataConKey :: Unique
1352 charDataConKey = mkPreludeDataConUnique 1
1353 consDataConKey = mkPreludeDataConUnique 2
1354 doubleDataConKey = mkPreludeDataConUnique 3
1355 falseDataConKey = mkPreludeDataConUnique 4
1356 floatDataConKey = mkPreludeDataConUnique 5
1357 intDataConKey = mkPreludeDataConUnique 6
1358 nilDataConKey = mkPreludeDataConUnique 11
1359 ratioDataConKey = mkPreludeDataConUnique 12
1360 stableNameDataConKey = mkPreludeDataConUnique 14
1361 trueDataConKey = mkPreludeDataConUnique 15
1362 wordDataConKey = mkPreludeDataConUnique 16
1363 ioDataConKey = mkPreludeDataConUnique 17
1364 integerDataConKey = mkPreludeDataConUnique 18
1366 -- Generic data constructors
1367 crossDataConKey, inlDataConKey, inrDataConKey, genUnitDataConKey :: Unique
1368 crossDataConKey = mkPreludeDataConUnique 20
1369 inlDataConKey = mkPreludeDataConUnique 21
1370 inrDataConKey = mkPreludeDataConUnique 22
1371 genUnitDataConKey = mkPreludeDataConUnique 23
1373 -- Data constructor for parallel arrays
1374 parrDataConKey :: Unique
1375 parrDataConKey = mkPreludeDataConUnique 24
1377 leftDataConKey, rightDataConKey :: Unique
1378 leftDataConKey = mkPreludeDataConUnique 25
1379 rightDataConKey = mkPreludeDataConUnique 26
1381 -- Data constructor for Heterogeneous Metaprogramming code types
1382 hetMetCodeTypeDataConKey :: Unique
1383 hetMetCodeTypeDataConKey = mkPreludeDataConUnique 27
1386 %************************************************************************
1388 \subsubsection[Uniques-prelude-Ids]{@Uniques@ for wired-in @Ids@ (except @DataCons@)}
1390 %************************************************************************
1393 absentErrorIdKey, augmentIdKey, appendIdKey, buildIdKey, errorIdKey,
1394 foldlIdKey, foldrIdKey, recSelErrorIdKey,
1395 integerMinusOneIdKey, integerPlusOneIdKey,
1396 integerPlusTwoIdKey, integerZeroIdKey,
1397 int2IntegerIdKey, seqIdKey, irrefutPatErrorIdKey, eqStringIdKey,
1398 noMethodBindingErrorIdKey, nonExhaustiveGuardsErrorIdKey,
1399 runtimeErrorIdKey, parErrorIdKey, parIdKey, patErrorIdKey,
1400 realWorldPrimIdKey, recConErrorIdKey, recUpdErrorIdKey,
1401 traceIdKey, wildCardKey,
1402 unpackCStringUtf8IdKey, unpackCStringAppendIdKey,
1403 unpackCStringFoldrIdKey, unpackCStringIdKey :: Unique
1404 wildCardKey = mkPreludeMiscIdUnique 0 -- See Note [WildCard]
1405 absentErrorIdKey = mkPreludeMiscIdUnique 1
1406 augmentIdKey = mkPreludeMiscIdUnique 3
1407 appendIdKey = mkPreludeMiscIdUnique 4
1408 buildIdKey = mkPreludeMiscIdUnique 5
1409 errorIdKey = mkPreludeMiscIdUnique 6
1410 foldlIdKey = mkPreludeMiscIdUnique 7
1411 foldrIdKey = mkPreludeMiscIdUnique 8
1412 recSelErrorIdKey = mkPreludeMiscIdUnique 9
1413 integerMinusOneIdKey = mkPreludeMiscIdUnique 10
1414 integerPlusOneIdKey = mkPreludeMiscIdUnique 11
1415 integerPlusTwoIdKey = mkPreludeMiscIdUnique 12
1416 integerZeroIdKey = mkPreludeMiscIdUnique 13
1417 int2IntegerIdKey = mkPreludeMiscIdUnique 14
1418 seqIdKey = mkPreludeMiscIdUnique 15
1419 irrefutPatErrorIdKey = mkPreludeMiscIdUnique 16
1420 eqStringIdKey = mkPreludeMiscIdUnique 17
1421 noMethodBindingErrorIdKey = mkPreludeMiscIdUnique 18
1422 nonExhaustiveGuardsErrorIdKey = mkPreludeMiscIdUnique 19
1423 runtimeErrorIdKey = mkPreludeMiscIdUnique 20
1424 parErrorIdKey = mkPreludeMiscIdUnique 21
1425 parIdKey = mkPreludeMiscIdUnique 22
1426 patErrorIdKey = mkPreludeMiscIdUnique 23
1427 realWorldPrimIdKey = mkPreludeMiscIdUnique 24
1428 recConErrorIdKey = mkPreludeMiscIdUnique 25
1429 recUpdErrorIdKey = mkPreludeMiscIdUnique 26
1430 traceIdKey = mkPreludeMiscIdUnique 27
1431 unpackCStringUtf8IdKey = mkPreludeMiscIdUnique 28
1432 unpackCStringAppendIdKey = mkPreludeMiscIdUnique 29
1433 unpackCStringFoldrIdKey = mkPreludeMiscIdUnique 30
1434 unpackCStringIdKey = mkPreludeMiscIdUnique 31
1436 unsafeCoerceIdKey, concatIdKey, filterIdKey, zipIdKey, bindIOIdKey,
1437 returnIOIdKey, deRefStablePtrIdKey, newStablePtrIdKey,
1438 smallIntegerIdKey, plusIntegerIdKey, timesIntegerIdKey,
1439 printIdKey, failIOIdKey, nullAddrIdKey, voidArgIdKey,
1440 fstIdKey, sndIdKey, otherwiseIdKey, assertIdKey, runSTRepIdKey :: Unique
1441 unsafeCoerceIdKey = mkPreludeMiscIdUnique 32
1442 concatIdKey = mkPreludeMiscIdUnique 33
1443 filterIdKey = mkPreludeMiscIdUnique 34
1444 zipIdKey = mkPreludeMiscIdUnique 35
1445 bindIOIdKey = mkPreludeMiscIdUnique 36
1446 returnIOIdKey = mkPreludeMiscIdUnique 37
1447 deRefStablePtrIdKey = mkPreludeMiscIdUnique 38
1448 newStablePtrIdKey = mkPreludeMiscIdUnique 39
1449 smallIntegerIdKey = mkPreludeMiscIdUnique 40
1450 plusIntegerIdKey = mkPreludeMiscIdUnique 41
1451 timesIntegerIdKey = mkPreludeMiscIdUnique 42
1452 printIdKey = mkPreludeMiscIdUnique 43
1453 failIOIdKey = mkPreludeMiscIdUnique 44
1454 nullAddrIdKey = mkPreludeMiscIdUnique 46
1455 voidArgIdKey = mkPreludeMiscIdUnique 47
1456 fstIdKey = mkPreludeMiscIdUnique 49
1457 sndIdKey = mkPreludeMiscIdUnique 50
1458 otherwiseIdKey = mkPreludeMiscIdUnique 51
1459 assertIdKey = mkPreludeMiscIdUnique 53
1460 runSTRepIdKey = mkPreludeMiscIdUnique 54
1462 rootMainKey, runMainKey :: Unique
1463 rootMainKey = mkPreludeMiscIdUnique 55
1464 runMainKey = mkPreludeMiscIdUnique 56
1466 thenIOIdKey, lazyIdKey, assertErrorIdKey :: Unique
1467 thenIOIdKey = mkPreludeMiscIdUnique 59
1468 lazyIdKey = mkPreludeMiscIdUnique 60
1469 assertErrorIdKey = mkPreludeMiscIdUnique 61
1471 breakpointIdKey, breakpointCondIdKey, breakpointAutoIdKey,
1472 breakpointJumpIdKey, breakpointCondJumpIdKey,
1473 breakpointAutoJumpIdKey :: Unique
1474 breakpointIdKey = mkPreludeMiscIdUnique 62
1475 breakpointCondIdKey = mkPreludeMiscIdUnique 63
1476 breakpointAutoIdKey = mkPreludeMiscIdUnique 64
1477 breakpointJumpIdKey = mkPreludeMiscIdUnique 65
1478 breakpointCondJumpIdKey = mkPreludeMiscIdUnique 66
1479 breakpointAutoJumpIdKey = mkPreludeMiscIdUnique 67
1481 inlineIdKey :: Unique
1482 inlineIdKey = mkPreludeMiscIdUnique 68
1484 mapIdKey, groupWithIdKey, dollarIdKey :: Unique
1485 mapIdKey = mkPreludeMiscIdUnique 69
1486 groupWithIdKey = mkPreludeMiscIdUnique 70
1487 dollarIdKey = mkPreludeMiscIdUnique 71
1489 coercionTokenIdKey :: Unique
1490 coercionTokenIdKey = mkPreludeMiscIdUnique 72
1492 -- Parallel array functions
1493 singletonPIdKey, nullPIdKey, lengthPIdKey, replicatePIdKey, mapPIdKey,
1494 filterPIdKey, zipPIdKey, crossMapPIdKey, indexPIdKey, toPIdKey,
1495 enumFromToPIdKey, enumFromThenToPIdKey, emptyPIdKey, appPIdKey :: Unique
1496 singletonPIdKey = mkPreludeMiscIdUnique 79
1497 nullPIdKey = mkPreludeMiscIdUnique 80
1498 lengthPIdKey = mkPreludeMiscIdUnique 81
1499 replicatePIdKey = mkPreludeMiscIdUnique 82
1500 mapPIdKey = mkPreludeMiscIdUnique 83
1501 filterPIdKey = mkPreludeMiscIdUnique 84
1502 zipPIdKey = mkPreludeMiscIdUnique 85
1503 crossMapPIdKey = mkPreludeMiscIdUnique 86
1504 indexPIdKey = mkPreludeMiscIdUnique 87
1505 toPIdKey = mkPreludeMiscIdUnique 88
1506 enumFromToPIdKey = mkPreludeMiscIdUnique 89
1507 enumFromThenToPIdKey = mkPreludeMiscIdUnique 90
1508 emptyPIdKey = mkPreludeMiscIdUnique 91
1509 appPIdKey = mkPreludeMiscIdUnique 92
1512 unmarshalObjectIdKey, marshalObjectIdKey, marshalStringIdKey,
1513 unmarshalStringIdKey, checkDotnetResNameIdKey :: Unique
1514 unmarshalObjectIdKey = mkPreludeMiscIdUnique 94
1515 marshalObjectIdKey = mkPreludeMiscIdUnique 95
1516 marshalStringIdKey = mkPreludeMiscIdUnique 96
1517 unmarshalStringIdKey = mkPreludeMiscIdUnique 97
1518 checkDotnetResNameIdKey = mkPreludeMiscIdUnique 98
1522 Certain class operations from Prelude classes. They get their own
1523 uniques so we can look them up easily when we want to conjure them up
1524 during type checking.
1527 -- Just a place holder for unbound variables produced by the renamer:
1528 unboundKey :: Unique
1529 unboundKey = mkPreludeMiscIdUnique 101
1531 fromIntegerClassOpKey, minusClassOpKey, fromRationalClassOpKey,
1532 enumFromClassOpKey, enumFromThenClassOpKey, enumFromToClassOpKey,
1533 enumFromThenToClassOpKey, eqClassOpKey, geClassOpKey, negateClassOpKey,
1534 failMClassOpKey, bindMClassOpKey, thenMClassOpKey, returnMClassOpKey,
1537 fromIntegerClassOpKey = mkPreludeMiscIdUnique 102
1538 minusClassOpKey = mkPreludeMiscIdUnique 103
1539 fromRationalClassOpKey = mkPreludeMiscIdUnique 104
1540 enumFromClassOpKey = mkPreludeMiscIdUnique 105
1541 enumFromThenClassOpKey = mkPreludeMiscIdUnique 106
1542 enumFromToClassOpKey = mkPreludeMiscIdUnique 107
1543 enumFromThenToClassOpKey = mkPreludeMiscIdUnique 108
1544 eqClassOpKey = mkPreludeMiscIdUnique 109
1545 geClassOpKey = mkPreludeMiscIdUnique 110
1546 negateClassOpKey = mkPreludeMiscIdUnique 111
1547 failMClassOpKey = mkPreludeMiscIdUnique 112
1548 bindMClassOpKey = mkPreludeMiscIdUnique 113 -- (>>=)
1549 thenMClassOpKey = mkPreludeMiscIdUnique 114 -- (>>)
1550 fmapClassOpKey = mkPreludeMiscIdUnique 115
1551 returnMClassOpKey = mkPreludeMiscIdUnique 117
1553 -- Recursive do notation
1555 mfixIdKey = mkPreludeMiscIdUnique 118
1558 arrAIdKey, composeAIdKey, firstAIdKey, appAIdKey, choiceAIdKey,
1559 loopAIdKey :: Unique
1560 arrAIdKey = mkPreludeMiscIdUnique 119
1561 composeAIdKey = mkPreludeMiscIdUnique 120 -- >>>
1562 firstAIdKey = mkPreludeMiscIdUnique 121
1563 appAIdKey = mkPreludeMiscIdUnique 122
1564 choiceAIdKey = mkPreludeMiscIdUnique 123 -- |||
1565 loopAIdKey = mkPreludeMiscIdUnique 124
1567 fromStringClassOpKey :: Unique
1568 fromStringClassOpKey = mkPreludeMiscIdUnique 125
1570 -- Annotation type checking
1571 toAnnotationWrapperIdKey :: Unique
1572 toAnnotationWrapperIdKey = mkPreludeMiscIdUnique 126
1574 -- Conversion functions
1575 fromIntegralIdKey, realToFracIdKey, toIntegerClassOpKey, toRationalClassOpKey :: Unique
1576 fromIntegralIdKey = mkPreludeMiscIdUnique 127
1577 realToFracIdKey = mkPreludeMiscIdUnique 128
1578 toIntegerClassOpKey = mkPreludeMiscIdUnique 129
1579 toRationalClassOpKey = mkPreludeMiscIdUnique 130
1581 -- Monad comprehensions
1582 guardMIdKey, liftMIdKey, groupMIdKey, mzipIdKey :: Unique
1583 guardMIdKey = mkPreludeMiscIdUnique 131
1584 liftMIdKey = mkPreludeMiscIdUnique 132
1585 groupMIdKey = mkPreludeMiscIdUnique 133
1586 mzipIdKey = mkPreludeMiscIdUnique 134
1589 hetMetCodeTypeTyConKey :: Unique
1590 hetMetCodeTypeTyConKey = mkPreludeTyConUnique 135
1592 hetmet_guest_integer_literal_key, hetmet_guest_string_literal_key, hetmet_guest_char_literal_key :: Unique
1593 hetmet_guest_integer_literal_key = mkPreludeMiscIdUnique 134
1594 hetmet_guest_string_literal_key = mkPreludeMiscIdUnique 135
1595 hetmet_guest_char_literal_key = mkPreludeMiscIdUnique 136
1596 hetmet_PGArrow_key :: Unique
1597 hetmet_PGArrow_key = mkPreludeMiscIdUnique 137
1598 hetmet_pga_id_key :: Unique
1599 hetmet_pga_id_key = mkPreludeMiscIdUnique 138
1600 hetmet_pga_comp_key :: Unique
1601 hetmet_pga_comp_key = mkPreludeMiscIdUnique 139
1602 hetmet_pga_first_key :: Unique
1603 hetmet_pga_first_key = mkPreludeMiscIdUnique 140
1604 hetmet_pga_second_key :: Unique
1605 hetmet_pga_second_key = mkPreludeMiscIdUnique 141
1606 hetmet_pga_cancell_key :: Unique
1607 hetmet_pga_cancell_key = mkPreludeMiscIdUnique 142
1608 hetmet_pga_cancelr_key :: Unique
1609 hetmet_pga_cancelr_key = mkPreludeMiscIdUnique 143
1610 hetmet_pga_uncancell_key :: Unique
1611 hetmet_pga_uncancell_key = mkPreludeMiscIdUnique 144
1612 hetmet_pga_uncancelr_key :: Unique
1613 hetmet_pga_uncancelr_key = mkPreludeMiscIdUnique 145
1614 hetmet_pga_assoc_key :: Unique
1615 hetmet_pga_assoc_key = mkPreludeMiscIdUnique 146
1616 hetmet_pga_unassoc_key :: Unique
1617 hetmet_pga_unassoc_key = mkPreludeMiscIdUnique 147
1618 hetmet_pga_copy_key :: Unique
1619 hetmet_pga_copy_key = mkPreludeMiscIdUnique 148
1620 hetmet_pga_drop_key :: Unique
1621 hetmet_pga_drop_key = mkPreludeMiscIdUnique 149
1622 hetmet_pga_swap_key :: Unique
1623 hetmet_pga_swap_key = mkPreludeMiscIdUnique 150
1624 hetmet_pga_applyl_key :: Unique
1625 hetmet_pga_applyl_key = mkPreludeMiscIdUnique 151
1626 hetmet_pga_applyr_key :: Unique
1627 hetmet_pga_applyr_key = mkPreludeMiscIdUnique 152
1628 hetmet_pga_curryl_key :: Unique
1629 hetmet_pga_curryl_key = mkPreludeMiscIdUnique 153
1630 hetmet_pga_curryr_key :: Unique
1631 hetmet_pga_curryr_key = mkPreludeMiscIdUnique 154
1632 hetmet_flatten_key = mkPreludeMiscIdUnique 155
1633 hetmet_unflatten_key = mkPreludeMiscIdUnique 156
1634 hetmet_flattened_id_key = mkPreludeMiscIdUnique 157
1635 hetmet_PGArrow_unit_key :: Unique
1636 hetmet_PGArrow_unit_key = mkPreludeMiscIdUnique 158
1637 hetmet_PGArrow_tensor_key :: Unique
1638 hetmet_PGArrow_tensor_key = mkPreludeMiscIdUnique 159
1639 hetmet_PGArrow_exponent_key :: Unique
1640 hetmet_PGArrow_exponent_key = mkPreludeMiscIdUnique 160
1642 hetmet_brak_key, hetmet_esc_key, hetmet_csp_key, hetmet_flatten_key, hetmet_unflatten_key, hetmet_flattened_id_key :: Unique
1643 hetmet_brak_key = mkPreludeMiscIdUnique 161
1644 hetmet_esc_key = mkPreludeMiscIdUnique 162
1645 hetmet_csp_key = mkPreludeMiscIdUnique 163
1648 ---------------- Template Haskell -------------------
1649 -- USES IdUniques 200-499
1650 -----------------------------------------------------
1654 %************************************************************************
1656 \subsection{Standard groups of types}
1658 %************************************************************************
1661 numericTyKeys :: [Unique]
1670 kindKeys :: [Unique]
1671 kindKeys = [ liftedTypeKindTyConKey
1672 , openTypeKindTyConKey
1673 , unliftedTypeKindTyConKey
1674 , ubxTupleKindTyConKey
1675 , argTypeKindTyConKey ]
1679 %************************************************************************
1681 \subsection[Class-std-groups]{Standard groups of Prelude classes}
1683 %************************************************************************
1685 NOTE: @Eq@ and @Text@ do need to appear in @standardClasses@
1686 even though every numeric class has these two as a superclass,
1687 because the list of ambiguous dictionaries hasn't been simplified.
1690 numericClassKeys :: [Unique]
1696 ++ fractionalClassKeys
1698 fractionalClassKeys :: [Unique]
1699 fractionalClassKeys =
1700 [ fractionalClassKey
1706 -- the strictness analyser needs to know about numeric types
1707 -- (see SaAbsInt.lhs)
1708 needsDataDeclCtxtClassKeys :: [Unique]
1709 needsDataDeclCtxtClassKeys = -- see comments in TcDeriv
1713 -- The "standard classes" are used in defaulting (Haskell 98 report 4.3.4),
1714 -- and are: "classes defined in the Prelude or a standard library"
1715 standardClassKeys :: [Unique]
1716 standardClassKeys = derivableClassKeys ++ numericClassKeys
1717 ++ [randomClassKey, randomGenClassKey,
1719 monadClassKey, monadPlusClassKey,
1721 applicativeClassKey, foldableClassKey, traversableClassKey
1725 @derivableClassKeys@ is also used in checking \tr{deriving} constructs
1729 derivableClassKeys :: [Unique]
1731 = [ eqClassKey, ordClassKey, enumClassKey, ixClassKey,
1732 boundedClassKey, showClassKey, readClassKey ]