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_CONC, gHC_IO, gHC_IO_Exception,
312 gHC_ST, gHC_ARR, gHC_STABLE, 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_CONC = mkBaseModule (fsLit "GHC.Conc")
345 gHC_IO = mkBaseModule (fsLit "GHC.IO")
346 gHC_IO_Exception = mkBaseModule (fsLit "GHC.IO.Exception")
347 gHC_ST = mkBaseModule (fsLit "GHC.ST")
348 gHC_ARR = mkBaseModule (fsLit "GHC.Arr")
349 gHC_STABLE = mkBaseModule (fsLit "GHC.Stable")
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
974 hetmet_pga_loopl_name :: Name
975 hetmet_pga_loopl_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_loopl") hetmet_pga_loopl_key
976 hetmet_pga_loopr_name :: Name
977 hetmet_pga_loopr_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_loopr") hetmet_pga_loopr_key
980 ioTyConName, ioDataConName, thenIOName, bindIOName, returnIOName,
982 ioTyConName = tcQual gHC_TYPES (fsLit "IO") ioTyConKey
983 ioDataConName = conName gHC_TYPES (fsLit "IO") ioDataConKey
984 thenIOName = varQual gHC_BASE (fsLit "thenIO") thenIOIdKey
985 bindIOName = varQual gHC_BASE (fsLit "bindIO") bindIOIdKey
986 returnIOName = varQual gHC_BASE (fsLit "returnIO") returnIOIdKey
987 failIOName = varQual gHC_IO (fsLit "failIO") failIOIdKey
991 printName = varQual sYSTEM_IO (fsLit "print") printIdKey
993 -- Int, Word, and Addr things
994 int8TyConName, int16TyConName, int32TyConName, int64TyConName :: Name
995 int8TyConName = tcQual gHC_INT (fsLit "Int8") int8TyConKey
996 int16TyConName = tcQual gHC_INT (fsLit "Int16") int16TyConKey
997 int32TyConName = tcQual gHC_INT (fsLit "Int32") int32TyConKey
998 int64TyConName = tcQual gHC_INT (fsLit "Int64") int64TyConKey
1001 word8TyConName, word16TyConName, word32TyConName, word64TyConName,
1002 wordTyConName, wordDataConName :: Name
1003 word8TyConName = tcQual gHC_WORD (fsLit "Word8") word8TyConKey
1004 word16TyConName = tcQual gHC_WORD (fsLit "Word16") word16TyConKey
1005 word32TyConName = tcQual gHC_WORD (fsLit "Word32") word32TyConKey
1006 word64TyConName = tcQual gHC_WORD (fsLit "Word64") word64TyConKey
1007 wordTyConName = tcQual gHC_WORD (fsLit "Word") wordTyConKey
1008 wordDataConName = conName gHC_WORD (fsLit "W#") wordDataConKey
1011 ptrTyConName, funPtrTyConName :: Name
1012 ptrTyConName = tcQual gHC_PTR (fsLit "Ptr") ptrTyConKey
1013 funPtrTyConName = tcQual gHC_PTR (fsLit "FunPtr") funPtrTyConKey
1015 -- Foreign objects and weak pointers
1016 stablePtrTyConName, newStablePtrName :: Name
1017 stablePtrTyConName = tcQual gHC_STABLE (fsLit "StablePtr") stablePtrTyConKey
1018 newStablePtrName = varQual gHC_STABLE (fsLit "newStablePtr") newStablePtrIdKey
1021 runSTRepName :: Name
1022 runSTRepName = varQual gHC_ST (fsLit "runSTRep") runSTRepIdKey
1024 -- Recursive-do notation
1025 monadFixClassName, mfixName :: Name
1026 monadFixClassName = clsQual mONAD_FIX (fsLit "MonadFix") monadFixClassKey
1027 mfixName = methName mONAD_FIX (fsLit "mfix") mfixIdKey
1030 arrAName, composeAName, firstAName, appAName, choiceAName, loopAName :: Name
1031 arrAName = varQual aRROW (fsLit "arr") arrAIdKey
1032 composeAName = varQual gHC_DESUGAR (fsLit ">>>") composeAIdKey
1033 firstAName = varQual aRROW (fsLit "first") firstAIdKey
1034 appAName = varQual aRROW (fsLit "app") appAIdKey
1035 choiceAName = varQual aRROW (fsLit "|||") choiceAIdKey
1036 loopAName = varQual aRROW (fsLit "loop") loopAIdKey
1038 -- Monad comprehensions
1039 guardMName, liftMName, groupMName, mzipName :: Name
1040 guardMName = varQual mONAD (fsLit "guard") guardMIdKey
1041 liftMName = varQual mONAD (fsLit "liftM") liftMIdKey
1042 groupMName = varQual mONAD_GROUP (fsLit "mgroupWith") groupMIdKey
1043 mzipName = varQual mONAD_ZIP (fsLit "mzip") mzipIdKey
1046 -- Annotation type checking
1047 toAnnotationWrapperName :: Name
1048 toAnnotationWrapperName = varQual gHC_DESUGAR (fsLit "toAnnotationWrapper") toAnnotationWrapperIdKey
1050 -- Other classes, needed for type defaulting
1051 monadPlusClassName, randomClassName, randomGenClassName,
1052 isStringClassName :: Name
1053 monadPlusClassName = clsQual mONAD (fsLit "MonadPlus") monadPlusClassKey
1054 randomClassName = clsQual rANDOM (fsLit "Random") randomClassKey
1055 randomGenClassName = clsQual rANDOM (fsLit "RandomGen") randomGenClassKey
1056 isStringClassName = clsQual dATA_STRING (fsLit "IsString") isStringClassKey
1059 objectTyConName :: Name
1060 objectTyConName = tcQual dOTNET (fsLit "Object") objectTyConKey
1061 -- objectTyConName was "wTcQual", but that's gone now, and
1062 -- I can't see why it was wired in anyway...
1063 unmarshalObjectName, marshalObjectName, marshalStringName,
1064 unmarshalStringName, checkDotnetResName :: Name
1065 unmarshalObjectName = varQual dOTNET (fsLit "unmarshalObject") unmarshalObjectIdKey
1066 marshalObjectName = varQual dOTNET (fsLit "marshalObject") marshalObjectIdKey
1067 marshalStringName = varQual dOTNET (fsLit "marshalString") marshalStringIdKey
1068 unmarshalStringName = varQual dOTNET (fsLit "unmarshalString") unmarshalStringIdKey
1069 checkDotnetResName = varQual dOTNET (fsLit "checkResult") checkDotnetResNameIdKey
1072 %************************************************************************
1074 \subsection{Local helpers}
1076 %************************************************************************
1078 All these are original names; hence mkOrig
1081 varQual, tcQual, clsQual :: Module -> FastString -> Unique -> Name
1082 varQual = mk_known_key_name varName
1083 tcQual = mk_known_key_name tcName
1084 clsQual = mk_known_key_name clsName
1086 mk_known_key_name :: NameSpace -> Module -> FastString -> Unique -> Name
1087 mk_known_key_name space modu str unique
1088 = mkExternalName unique modu (mkOccNameFS space str) noSrcSpan
1090 conName :: Module -> FastString -> Unique -> Name
1091 conName modu occ unique
1092 = mkExternalName unique modu (mkOccNameFS dataName occ) noSrcSpan
1094 methName :: Module -> FastString -> Unique -> Name
1095 methName modu occ unique
1096 = mkExternalName unique modu (mkVarOccFS occ) noSrcSpan
1099 %************************************************************************
1101 \subsubsection[Uniques-prelude-Classes]{@Uniques@ for wired-in @Classes@}
1103 %************************************************************************
1104 --MetaHaskell extension hand allocate keys here
1107 boundedClassKey, enumClassKey, eqClassKey, floatingClassKey,
1108 fractionalClassKey, integralClassKey, monadClassKey, dataClassKey,
1109 functorClassKey, numClassKey, ordClassKey, readClassKey, realClassKey,
1110 realFloatClassKey, realFracClassKey, showClassKey, ixClassKey :: Unique
1111 boundedClassKey = mkPreludeClassUnique 1
1112 enumClassKey = mkPreludeClassUnique 2
1113 eqClassKey = mkPreludeClassUnique 3
1114 floatingClassKey = mkPreludeClassUnique 5
1115 fractionalClassKey = mkPreludeClassUnique 6
1116 integralClassKey = mkPreludeClassUnique 7
1117 monadClassKey = mkPreludeClassUnique 8
1118 dataClassKey = mkPreludeClassUnique 9
1119 functorClassKey = mkPreludeClassUnique 10
1120 numClassKey = mkPreludeClassUnique 11
1121 ordClassKey = mkPreludeClassUnique 12
1122 readClassKey = mkPreludeClassUnique 13
1123 realClassKey = mkPreludeClassUnique 14
1124 realFloatClassKey = mkPreludeClassUnique 15
1125 realFracClassKey = mkPreludeClassUnique 16
1126 showClassKey = mkPreludeClassUnique 17
1127 ixClassKey = mkPreludeClassUnique 18
1129 typeableClassKey, typeable1ClassKey, typeable2ClassKey, typeable3ClassKey,
1130 typeable4ClassKey, typeable5ClassKey, typeable6ClassKey, typeable7ClassKey
1132 typeableClassKey = mkPreludeClassUnique 20
1133 typeable1ClassKey = mkPreludeClassUnique 21
1134 typeable2ClassKey = mkPreludeClassUnique 22
1135 typeable3ClassKey = mkPreludeClassUnique 23
1136 typeable4ClassKey = mkPreludeClassUnique 24
1137 typeable5ClassKey = mkPreludeClassUnique 25
1138 typeable6ClassKey = mkPreludeClassUnique 26
1139 typeable7ClassKey = mkPreludeClassUnique 27
1141 monadFixClassKey :: Unique
1142 monadFixClassKey = mkPreludeClassUnique 28
1144 monadPlusClassKey, randomClassKey, randomGenClassKey :: Unique
1145 monadPlusClassKey = mkPreludeClassUnique 30
1146 randomClassKey = mkPreludeClassUnique 31
1147 randomGenClassKey = mkPreludeClassUnique 32
1149 isStringClassKey :: Unique
1150 isStringClassKey = mkPreludeClassUnique 33
1152 applicativeClassKey, foldableClassKey, traversableClassKey :: Unique
1153 applicativeClassKey = mkPreludeClassUnique 34
1154 foldableClassKey = mkPreludeClassUnique 35
1155 traversableClassKey = mkPreludeClassUnique 36
1157 genClassKey, gen1ClassKey, datatypeClassKey, constructorClassKey,
1158 selectorClassKey :: Unique
1159 genClassKey = mkPreludeClassUnique 37
1160 gen1ClassKey = mkPreludeClassUnique 38
1162 datatypeClassKey = mkPreludeClassUnique 39
1163 constructorClassKey = mkPreludeClassUnique 40
1164 selectorClassKey = mkPreludeClassUnique 41
1167 %************************************************************************
1169 \subsubsection[Uniques-prelude-TyCons]{@Uniques@ for wired-in @TyCons@}
1171 %************************************************************************
1174 addrPrimTyConKey, arrayPrimTyConKey, boolTyConKey, byteArrayPrimTyConKey,
1175 charPrimTyConKey, charTyConKey, doublePrimTyConKey, doubleTyConKey,
1176 floatPrimTyConKey, floatTyConKey, funTyConKey, intPrimTyConKey,
1177 intTyConKey, int8TyConKey, int16TyConKey, int32PrimTyConKey,
1178 int32TyConKey, int64PrimTyConKey, int64TyConKey, integerTyConKey,
1179 listTyConKey, foreignObjPrimTyConKey, weakPrimTyConKey,
1180 mutableArrayPrimTyConKey, mutableByteArrayPrimTyConKey,
1181 orderingTyConKey, mVarPrimTyConKey, ratioTyConKey, rationalTyConKey,
1182 realWorldTyConKey, stablePtrPrimTyConKey, stablePtrTyConKey,
1183 anyTyConKey :: Unique
1184 addrPrimTyConKey = mkPreludeTyConUnique 1
1185 arrayPrimTyConKey = mkPreludeTyConUnique 3
1186 boolTyConKey = mkPreludeTyConUnique 4
1187 byteArrayPrimTyConKey = mkPreludeTyConUnique 5
1188 charPrimTyConKey = mkPreludeTyConUnique 7
1189 charTyConKey = mkPreludeTyConUnique 8
1190 doublePrimTyConKey = mkPreludeTyConUnique 9
1191 doubleTyConKey = mkPreludeTyConUnique 10
1192 floatPrimTyConKey = mkPreludeTyConUnique 11
1193 floatTyConKey = mkPreludeTyConUnique 12
1194 funTyConKey = mkPreludeTyConUnique 13
1195 intPrimTyConKey = mkPreludeTyConUnique 14
1196 intTyConKey = mkPreludeTyConUnique 15
1197 int8TyConKey = mkPreludeTyConUnique 16
1198 int16TyConKey = mkPreludeTyConUnique 17
1199 int32PrimTyConKey = mkPreludeTyConUnique 18
1200 int32TyConKey = mkPreludeTyConUnique 19
1201 int64PrimTyConKey = mkPreludeTyConUnique 20
1202 int64TyConKey = mkPreludeTyConUnique 21
1203 integerTyConKey = mkPreludeTyConUnique 22
1204 listTyConKey = mkPreludeTyConUnique 23
1205 foreignObjPrimTyConKey = mkPreludeTyConUnique 24
1206 weakPrimTyConKey = mkPreludeTyConUnique 27
1207 mutableArrayPrimTyConKey = mkPreludeTyConUnique 28
1208 mutableByteArrayPrimTyConKey = mkPreludeTyConUnique 29
1209 orderingTyConKey = mkPreludeTyConUnique 30
1210 mVarPrimTyConKey = mkPreludeTyConUnique 31
1211 ratioTyConKey = mkPreludeTyConUnique 32
1212 rationalTyConKey = mkPreludeTyConUnique 33
1213 realWorldTyConKey = mkPreludeTyConUnique 34
1214 stablePtrPrimTyConKey = mkPreludeTyConUnique 35
1215 stablePtrTyConKey = mkPreludeTyConUnique 36
1216 anyTyConKey = mkPreludeTyConUnique 37
1218 statePrimTyConKey, stableNamePrimTyConKey, stableNameTyConKey,
1219 mutVarPrimTyConKey, ioTyConKey,
1220 wordPrimTyConKey, wordTyConKey, word8TyConKey, word16TyConKey,
1221 word32PrimTyConKey, word32TyConKey, word64PrimTyConKey, word64TyConKey,
1222 liftedConKey, unliftedConKey, anyBoxConKey, kindConKey, boxityConKey,
1223 typeConKey, threadIdPrimTyConKey, bcoPrimTyConKey, ptrTyConKey,
1224 funPtrTyConKey, tVarPrimTyConKey, eqPredPrimTyConKey :: Unique
1225 statePrimTyConKey = mkPreludeTyConUnique 50
1226 stableNamePrimTyConKey = mkPreludeTyConUnique 51
1227 stableNameTyConKey = mkPreludeTyConUnique 52
1228 eqPredPrimTyConKey = mkPreludeTyConUnique 53
1229 mutVarPrimTyConKey = mkPreludeTyConUnique 55
1230 ioTyConKey = mkPreludeTyConUnique 56
1231 wordPrimTyConKey = mkPreludeTyConUnique 58
1232 wordTyConKey = mkPreludeTyConUnique 59
1233 word8TyConKey = mkPreludeTyConUnique 60
1234 word16TyConKey = mkPreludeTyConUnique 61
1235 word32PrimTyConKey = mkPreludeTyConUnique 62
1236 word32TyConKey = mkPreludeTyConUnique 63
1237 word64PrimTyConKey = mkPreludeTyConUnique 64
1238 word64TyConKey = mkPreludeTyConUnique 65
1239 liftedConKey = mkPreludeTyConUnique 66
1240 unliftedConKey = mkPreludeTyConUnique 67
1241 anyBoxConKey = mkPreludeTyConUnique 68
1242 kindConKey = mkPreludeTyConUnique 69
1243 boxityConKey = mkPreludeTyConUnique 70
1244 typeConKey = mkPreludeTyConUnique 71
1245 threadIdPrimTyConKey = mkPreludeTyConUnique 72
1246 bcoPrimTyConKey = mkPreludeTyConUnique 73
1247 ptrTyConKey = mkPreludeTyConUnique 74
1248 funPtrTyConKey = mkPreludeTyConUnique 75
1249 tVarPrimTyConKey = mkPreludeTyConUnique 76
1251 -- Parallel array type constructor
1252 parrTyConKey :: Unique
1253 parrTyConKey = mkPreludeTyConUnique 82
1256 objectTyConKey :: Unique
1257 objectTyConKey = mkPreludeTyConUnique 83
1259 eitherTyConKey :: Unique
1260 eitherTyConKey = mkPreludeTyConUnique 84
1262 -- Super Kinds constructors
1263 tySuperKindTyConKey :: Unique
1264 tySuperKindTyConKey = mkPreludeTyConUnique 85
1266 -- Kind constructors
1267 liftedTypeKindTyConKey, openTypeKindTyConKey, unliftedTypeKindTyConKey,
1268 ubxTupleKindTyConKey, argTypeKindTyConKey :: Unique
1269 liftedTypeKindTyConKey = mkPreludeTyConUnique 87
1270 openTypeKindTyConKey = mkPreludeTyConUnique 88
1271 unliftedTypeKindTyConKey = mkPreludeTyConUnique 89
1272 ubxTupleKindTyConKey = mkPreludeTyConUnique 90
1273 argTypeKindTyConKey = mkPreludeTyConUnique 91
1275 -- Coercion constructors
1276 symCoercionTyConKey, transCoercionTyConKey, leftCoercionTyConKey,
1277 rightCoercionTyConKey, instCoercionTyConKey, unsafeCoercionTyConKey,
1278 csel1CoercionTyConKey, csel2CoercionTyConKey, cselRCoercionTyConKey
1280 symCoercionTyConKey = mkPreludeTyConUnique 93
1281 transCoercionTyConKey = mkPreludeTyConUnique 94
1282 leftCoercionTyConKey = mkPreludeTyConUnique 95
1283 rightCoercionTyConKey = mkPreludeTyConUnique 96
1284 instCoercionTyConKey = mkPreludeTyConUnique 97
1285 unsafeCoercionTyConKey = mkPreludeTyConUnique 98
1286 csel1CoercionTyConKey = mkPreludeTyConUnique 99
1287 csel2CoercionTyConKey = mkPreludeTyConUnique 100
1288 cselRCoercionTyConKey = mkPreludeTyConUnique 101
1290 unknownTyConKey, unknown1TyConKey, unknown2TyConKey, unknown3TyConKey,
1291 opaqueTyConKey :: Unique
1292 unknownTyConKey = mkPreludeTyConUnique 129
1293 unknown1TyConKey = mkPreludeTyConUnique 130
1294 unknown2TyConKey = mkPreludeTyConUnique 131
1295 unknown3TyConKey = mkPreludeTyConUnique 132
1296 opaqueTyConKey = mkPreludeTyConUnique 133
1298 stringTyConKey :: Unique
1299 stringTyConKey = mkPreludeTyConUnique 134
1301 -- Generics (Unique keys)
1302 v1TyConKey, u1TyConKey, par1TyConKey, rec1TyConKey,
1303 k1TyConKey, m1TyConKey, sumTyConKey, prodTyConKey,
1304 compTyConKey, rTyConKey, pTyConKey, dTyConKey,
1305 cTyConKey, sTyConKey, rec0TyConKey, par0TyConKey,
1306 d1TyConKey, c1TyConKey, s1TyConKey, noSelTyConKey,
1307 repTyConKey, rep1TyConKey :: Unique
1309 v1TyConKey = mkPreludeTyConUnique 135
1310 u1TyConKey = mkPreludeTyConUnique 136
1311 par1TyConKey = mkPreludeTyConUnique 137
1312 rec1TyConKey = mkPreludeTyConUnique 138
1313 k1TyConKey = mkPreludeTyConUnique 139
1314 m1TyConKey = mkPreludeTyConUnique 140
1316 sumTyConKey = mkPreludeTyConUnique 141
1317 prodTyConKey = mkPreludeTyConUnique 142
1318 compTyConKey = mkPreludeTyConUnique 143
1320 rTyConKey = mkPreludeTyConUnique 144
1321 pTyConKey = mkPreludeTyConUnique 145
1322 dTyConKey = mkPreludeTyConUnique 146
1323 cTyConKey = mkPreludeTyConUnique 147
1324 sTyConKey = mkPreludeTyConUnique 148
1326 rec0TyConKey = mkPreludeTyConUnique 149
1327 par0TyConKey = mkPreludeTyConUnique 150
1328 d1TyConKey = mkPreludeTyConUnique 151
1329 c1TyConKey = mkPreludeTyConUnique 152
1330 s1TyConKey = mkPreludeTyConUnique 153
1331 noSelTyConKey = mkPreludeTyConUnique 154
1333 repTyConKey = mkPreludeTyConUnique 155
1334 rep1TyConKey = mkPreludeTyConUnique 156
1336 ---------------- Template Haskell -------------------
1337 -- USES TyConUniques 200-299
1338 -----------------------------------------------------
1340 unitTyConKey :: Unique
1341 unitTyConKey = mkTupleTyConUnique Boxed 0
1344 %************************************************************************
1346 \subsubsection[Uniques-prelude-DataCons]{@Uniques@ for wired-in @DataCons@}
1348 %************************************************************************
1351 charDataConKey, consDataConKey, doubleDataConKey, falseDataConKey,
1352 floatDataConKey, intDataConKey, nilDataConKey, ratioDataConKey,
1353 stableNameDataConKey, trueDataConKey, wordDataConKey,
1354 ioDataConKey, integerDataConKey :: Unique
1355 charDataConKey = mkPreludeDataConUnique 1
1356 consDataConKey = mkPreludeDataConUnique 2
1357 doubleDataConKey = mkPreludeDataConUnique 3
1358 falseDataConKey = mkPreludeDataConUnique 4
1359 floatDataConKey = mkPreludeDataConUnique 5
1360 intDataConKey = mkPreludeDataConUnique 6
1361 nilDataConKey = mkPreludeDataConUnique 11
1362 ratioDataConKey = mkPreludeDataConUnique 12
1363 stableNameDataConKey = mkPreludeDataConUnique 14
1364 trueDataConKey = mkPreludeDataConUnique 15
1365 wordDataConKey = mkPreludeDataConUnique 16
1366 ioDataConKey = mkPreludeDataConUnique 17
1367 integerDataConKey = mkPreludeDataConUnique 18
1369 -- Generic data constructors
1370 crossDataConKey, inlDataConKey, inrDataConKey, genUnitDataConKey :: Unique
1371 crossDataConKey = mkPreludeDataConUnique 20
1372 inlDataConKey = mkPreludeDataConUnique 21
1373 inrDataConKey = mkPreludeDataConUnique 22
1374 genUnitDataConKey = mkPreludeDataConUnique 23
1376 -- Data constructor for parallel arrays
1377 parrDataConKey :: Unique
1378 parrDataConKey = mkPreludeDataConUnique 24
1380 leftDataConKey, rightDataConKey :: Unique
1381 leftDataConKey = mkPreludeDataConUnique 25
1382 rightDataConKey = mkPreludeDataConUnique 26
1384 -- Data constructor for Heterogeneous Metaprogramming code types
1385 hetMetCodeTypeDataConKey :: Unique
1386 hetMetCodeTypeDataConKey = mkPreludeDataConUnique 27
1389 %************************************************************************
1391 \subsubsection[Uniques-prelude-Ids]{@Uniques@ for wired-in @Ids@ (except @DataCons@)}
1393 %************************************************************************
1396 absentErrorIdKey, augmentIdKey, appendIdKey, buildIdKey, errorIdKey,
1397 foldlIdKey, foldrIdKey, recSelErrorIdKey,
1398 integerMinusOneIdKey, integerPlusOneIdKey,
1399 integerPlusTwoIdKey, integerZeroIdKey,
1400 int2IntegerIdKey, seqIdKey, irrefutPatErrorIdKey, eqStringIdKey,
1401 noMethodBindingErrorIdKey, nonExhaustiveGuardsErrorIdKey,
1402 runtimeErrorIdKey, parErrorIdKey, parIdKey, patErrorIdKey,
1403 realWorldPrimIdKey, recConErrorIdKey, recUpdErrorIdKey,
1404 traceIdKey, wildCardKey,
1405 unpackCStringUtf8IdKey, unpackCStringAppendIdKey,
1406 unpackCStringFoldrIdKey, unpackCStringIdKey :: Unique
1407 wildCardKey = mkPreludeMiscIdUnique 0 -- See Note [WildCard]
1408 absentErrorIdKey = mkPreludeMiscIdUnique 1
1409 augmentIdKey = mkPreludeMiscIdUnique 3
1410 appendIdKey = mkPreludeMiscIdUnique 4
1411 buildIdKey = mkPreludeMiscIdUnique 5
1412 errorIdKey = mkPreludeMiscIdUnique 6
1413 foldlIdKey = mkPreludeMiscIdUnique 7
1414 foldrIdKey = mkPreludeMiscIdUnique 8
1415 recSelErrorIdKey = mkPreludeMiscIdUnique 9
1416 integerMinusOneIdKey = mkPreludeMiscIdUnique 10
1417 integerPlusOneIdKey = mkPreludeMiscIdUnique 11
1418 integerPlusTwoIdKey = mkPreludeMiscIdUnique 12
1419 integerZeroIdKey = mkPreludeMiscIdUnique 13
1420 int2IntegerIdKey = mkPreludeMiscIdUnique 14
1421 seqIdKey = mkPreludeMiscIdUnique 15
1422 irrefutPatErrorIdKey = mkPreludeMiscIdUnique 16
1423 eqStringIdKey = mkPreludeMiscIdUnique 17
1424 noMethodBindingErrorIdKey = mkPreludeMiscIdUnique 18
1425 nonExhaustiveGuardsErrorIdKey = mkPreludeMiscIdUnique 19
1426 runtimeErrorIdKey = mkPreludeMiscIdUnique 20
1427 parErrorIdKey = mkPreludeMiscIdUnique 21
1428 parIdKey = mkPreludeMiscIdUnique 22
1429 patErrorIdKey = mkPreludeMiscIdUnique 23
1430 realWorldPrimIdKey = mkPreludeMiscIdUnique 24
1431 recConErrorIdKey = mkPreludeMiscIdUnique 25
1432 recUpdErrorIdKey = mkPreludeMiscIdUnique 26
1433 traceIdKey = mkPreludeMiscIdUnique 27
1434 unpackCStringUtf8IdKey = mkPreludeMiscIdUnique 28
1435 unpackCStringAppendIdKey = mkPreludeMiscIdUnique 29
1436 unpackCStringFoldrIdKey = mkPreludeMiscIdUnique 30
1437 unpackCStringIdKey = mkPreludeMiscIdUnique 31
1439 unsafeCoerceIdKey, concatIdKey, filterIdKey, zipIdKey, bindIOIdKey,
1440 returnIOIdKey, deRefStablePtrIdKey, newStablePtrIdKey,
1441 smallIntegerIdKey, plusIntegerIdKey, timesIntegerIdKey,
1442 printIdKey, failIOIdKey, nullAddrIdKey, voidArgIdKey,
1443 fstIdKey, sndIdKey, otherwiseIdKey, assertIdKey, runSTRepIdKey :: Unique
1444 unsafeCoerceIdKey = mkPreludeMiscIdUnique 32
1445 concatIdKey = mkPreludeMiscIdUnique 33
1446 filterIdKey = mkPreludeMiscIdUnique 34
1447 zipIdKey = mkPreludeMiscIdUnique 35
1448 bindIOIdKey = mkPreludeMiscIdUnique 36
1449 returnIOIdKey = mkPreludeMiscIdUnique 37
1450 deRefStablePtrIdKey = mkPreludeMiscIdUnique 38
1451 newStablePtrIdKey = mkPreludeMiscIdUnique 39
1452 smallIntegerIdKey = mkPreludeMiscIdUnique 40
1453 plusIntegerIdKey = mkPreludeMiscIdUnique 41
1454 timesIntegerIdKey = mkPreludeMiscIdUnique 42
1455 printIdKey = mkPreludeMiscIdUnique 43
1456 failIOIdKey = mkPreludeMiscIdUnique 44
1457 nullAddrIdKey = mkPreludeMiscIdUnique 46
1458 voidArgIdKey = mkPreludeMiscIdUnique 47
1459 fstIdKey = mkPreludeMiscIdUnique 49
1460 sndIdKey = mkPreludeMiscIdUnique 50
1461 otherwiseIdKey = mkPreludeMiscIdUnique 51
1462 assertIdKey = mkPreludeMiscIdUnique 53
1463 runSTRepIdKey = mkPreludeMiscIdUnique 54
1465 rootMainKey, runMainKey :: Unique
1466 rootMainKey = mkPreludeMiscIdUnique 55
1467 runMainKey = mkPreludeMiscIdUnique 56
1469 thenIOIdKey, lazyIdKey, assertErrorIdKey :: Unique
1470 thenIOIdKey = mkPreludeMiscIdUnique 59
1471 lazyIdKey = mkPreludeMiscIdUnique 60
1472 assertErrorIdKey = mkPreludeMiscIdUnique 61
1474 breakpointIdKey, breakpointCondIdKey, breakpointAutoIdKey,
1475 breakpointJumpIdKey, breakpointCondJumpIdKey,
1476 breakpointAutoJumpIdKey :: Unique
1477 breakpointIdKey = mkPreludeMiscIdUnique 62
1478 breakpointCondIdKey = mkPreludeMiscIdUnique 63
1479 breakpointAutoIdKey = mkPreludeMiscIdUnique 64
1480 breakpointJumpIdKey = mkPreludeMiscIdUnique 65
1481 breakpointCondJumpIdKey = mkPreludeMiscIdUnique 66
1482 breakpointAutoJumpIdKey = mkPreludeMiscIdUnique 67
1484 inlineIdKey :: Unique
1485 inlineIdKey = mkPreludeMiscIdUnique 68
1487 mapIdKey, groupWithIdKey, dollarIdKey :: Unique
1488 mapIdKey = mkPreludeMiscIdUnique 69
1489 groupWithIdKey = mkPreludeMiscIdUnique 70
1490 dollarIdKey = mkPreludeMiscIdUnique 71
1492 coercionTokenIdKey :: Unique
1493 coercionTokenIdKey = mkPreludeMiscIdUnique 72
1495 -- Parallel array functions
1496 singletonPIdKey, nullPIdKey, lengthPIdKey, replicatePIdKey, mapPIdKey,
1497 filterPIdKey, zipPIdKey, crossMapPIdKey, indexPIdKey, toPIdKey,
1498 enumFromToPIdKey, enumFromThenToPIdKey, emptyPIdKey, appPIdKey :: Unique
1499 singletonPIdKey = mkPreludeMiscIdUnique 79
1500 nullPIdKey = mkPreludeMiscIdUnique 80
1501 lengthPIdKey = mkPreludeMiscIdUnique 81
1502 replicatePIdKey = mkPreludeMiscIdUnique 82
1503 mapPIdKey = mkPreludeMiscIdUnique 83
1504 filterPIdKey = mkPreludeMiscIdUnique 84
1505 zipPIdKey = mkPreludeMiscIdUnique 85
1506 crossMapPIdKey = mkPreludeMiscIdUnique 86
1507 indexPIdKey = mkPreludeMiscIdUnique 87
1508 toPIdKey = mkPreludeMiscIdUnique 88
1509 enumFromToPIdKey = mkPreludeMiscIdUnique 89
1510 enumFromThenToPIdKey = mkPreludeMiscIdUnique 90
1511 emptyPIdKey = mkPreludeMiscIdUnique 91
1512 appPIdKey = mkPreludeMiscIdUnique 92
1515 unmarshalObjectIdKey, marshalObjectIdKey, marshalStringIdKey,
1516 unmarshalStringIdKey, checkDotnetResNameIdKey :: Unique
1517 unmarshalObjectIdKey = mkPreludeMiscIdUnique 94
1518 marshalObjectIdKey = mkPreludeMiscIdUnique 95
1519 marshalStringIdKey = mkPreludeMiscIdUnique 96
1520 unmarshalStringIdKey = mkPreludeMiscIdUnique 97
1521 checkDotnetResNameIdKey = mkPreludeMiscIdUnique 98
1525 Certain class operations from Prelude classes. They get their own
1526 uniques so we can look them up easily when we want to conjure them up
1527 during type checking.
1530 -- Just a place holder for unbound variables produced by the renamer:
1531 unboundKey :: Unique
1532 unboundKey = mkPreludeMiscIdUnique 101
1534 fromIntegerClassOpKey, minusClassOpKey, fromRationalClassOpKey,
1535 enumFromClassOpKey, enumFromThenClassOpKey, enumFromToClassOpKey,
1536 enumFromThenToClassOpKey, eqClassOpKey, geClassOpKey, negateClassOpKey,
1537 failMClassOpKey, bindMClassOpKey, thenMClassOpKey, returnMClassOpKey,
1540 fromIntegerClassOpKey = mkPreludeMiscIdUnique 102
1541 minusClassOpKey = mkPreludeMiscIdUnique 103
1542 fromRationalClassOpKey = mkPreludeMiscIdUnique 104
1543 enumFromClassOpKey = mkPreludeMiscIdUnique 105
1544 enumFromThenClassOpKey = mkPreludeMiscIdUnique 106
1545 enumFromToClassOpKey = mkPreludeMiscIdUnique 107
1546 enumFromThenToClassOpKey = mkPreludeMiscIdUnique 108
1547 eqClassOpKey = mkPreludeMiscIdUnique 109
1548 geClassOpKey = mkPreludeMiscIdUnique 110
1549 negateClassOpKey = mkPreludeMiscIdUnique 111
1550 failMClassOpKey = mkPreludeMiscIdUnique 112
1551 bindMClassOpKey = mkPreludeMiscIdUnique 113 -- (>>=)
1552 thenMClassOpKey = mkPreludeMiscIdUnique 114 -- (>>)
1553 fmapClassOpKey = mkPreludeMiscIdUnique 115
1554 returnMClassOpKey = mkPreludeMiscIdUnique 117
1556 -- Recursive do notation
1558 mfixIdKey = mkPreludeMiscIdUnique 118
1561 arrAIdKey, composeAIdKey, firstAIdKey, appAIdKey, choiceAIdKey,
1562 loopAIdKey :: Unique
1563 arrAIdKey = mkPreludeMiscIdUnique 119
1564 composeAIdKey = mkPreludeMiscIdUnique 120 -- >>>
1565 firstAIdKey = mkPreludeMiscIdUnique 121
1566 appAIdKey = mkPreludeMiscIdUnique 122
1567 choiceAIdKey = mkPreludeMiscIdUnique 123 -- |||
1568 loopAIdKey = mkPreludeMiscIdUnique 124
1570 fromStringClassOpKey :: Unique
1571 fromStringClassOpKey = mkPreludeMiscIdUnique 125
1573 -- Annotation type checking
1574 toAnnotationWrapperIdKey :: Unique
1575 toAnnotationWrapperIdKey = mkPreludeMiscIdUnique 126
1577 -- Conversion functions
1578 fromIntegralIdKey, realToFracIdKey, toIntegerClassOpKey, toRationalClassOpKey :: Unique
1579 fromIntegralIdKey = mkPreludeMiscIdUnique 127
1580 realToFracIdKey = mkPreludeMiscIdUnique 128
1581 toIntegerClassOpKey = mkPreludeMiscIdUnique 129
1582 toRationalClassOpKey = mkPreludeMiscIdUnique 130
1584 -- Monad comprehensions
1585 guardMIdKey, liftMIdKey, groupMIdKey, mzipIdKey :: Unique
1586 guardMIdKey = mkPreludeMiscIdUnique 131
1587 liftMIdKey = mkPreludeMiscIdUnique 132
1588 groupMIdKey = mkPreludeMiscIdUnique 133
1589 mzipIdKey = mkPreludeMiscIdUnique 134
1592 hetMetCodeTypeTyConKey :: Unique
1593 hetMetCodeTypeTyConKey = mkPreludeTyConUnique 135
1595 hetmet_guest_integer_literal_key, hetmet_guest_string_literal_key, hetmet_guest_char_literal_key :: Unique
1596 hetmet_guest_integer_literal_key = mkPreludeMiscIdUnique 134
1597 hetmet_guest_string_literal_key = mkPreludeMiscIdUnique 135
1598 hetmet_guest_char_literal_key = mkPreludeMiscIdUnique 136
1599 hetmet_PGArrow_key :: Unique
1600 hetmet_PGArrow_key = mkPreludeMiscIdUnique 137
1601 hetmet_pga_id_key :: Unique
1602 hetmet_pga_id_key = mkPreludeMiscIdUnique 138
1603 hetmet_pga_comp_key :: Unique
1604 hetmet_pga_comp_key = mkPreludeMiscIdUnique 139
1605 hetmet_pga_first_key :: Unique
1606 hetmet_pga_first_key = mkPreludeMiscIdUnique 140
1607 hetmet_pga_second_key :: Unique
1608 hetmet_pga_second_key = mkPreludeMiscIdUnique 141
1609 hetmet_pga_cancell_key :: Unique
1610 hetmet_pga_cancell_key = mkPreludeMiscIdUnique 142
1611 hetmet_pga_cancelr_key :: Unique
1612 hetmet_pga_cancelr_key = mkPreludeMiscIdUnique 143
1613 hetmet_pga_uncancell_key :: Unique
1614 hetmet_pga_uncancell_key = mkPreludeMiscIdUnique 144
1615 hetmet_pga_uncancelr_key :: Unique
1616 hetmet_pga_uncancelr_key = mkPreludeMiscIdUnique 145
1617 hetmet_pga_assoc_key :: Unique
1618 hetmet_pga_assoc_key = mkPreludeMiscIdUnique 146
1619 hetmet_pga_unassoc_key :: Unique
1620 hetmet_pga_unassoc_key = mkPreludeMiscIdUnique 147
1621 hetmet_pga_copy_key :: Unique
1622 hetmet_pga_copy_key = mkPreludeMiscIdUnique 148
1623 hetmet_pga_drop_key :: Unique
1624 hetmet_pga_drop_key = mkPreludeMiscIdUnique 149
1625 hetmet_pga_swap_key :: Unique
1626 hetmet_pga_swap_key = mkPreludeMiscIdUnique 150
1627 hetmet_pga_applyl_key :: Unique
1628 hetmet_pga_applyl_key = mkPreludeMiscIdUnique 151
1629 hetmet_pga_applyr_key :: Unique
1630 hetmet_pga_applyr_key = mkPreludeMiscIdUnique 152
1631 hetmet_pga_curryl_key :: Unique
1632 hetmet_pga_curryl_key = mkPreludeMiscIdUnique 153
1633 hetmet_pga_curryr_key :: Unique
1634 hetmet_pga_curryr_key = mkPreludeMiscIdUnique 154
1635 hetmet_flatten_key = mkPreludeMiscIdUnique 155
1636 hetmet_unflatten_key = mkPreludeMiscIdUnique 156
1637 hetmet_flattened_id_key = mkPreludeMiscIdUnique 157
1638 hetmet_PGArrow_unit_key :: Unique
1639 hetmet_PGArrow_unit_key = mkPreludeMiscIdUnique 158
1640 hetmet_PGArrow_tensor_key :: Unique
1641 hetmet_PGArrow_tensor_key = mkPreludeMiscIdUnique 159
1642 hetmet_PGArrow_exponent_key :: Unique
1643 hetmet_PGArrow_exponent_key = mkPreludeMiscIdUnique 160
1645 hetmet_brak_key, hetmet_esc_key, hetmet_csp_key, hetmet_flatten_key, hetmet_unflatten_key, hetmet_flattened_id_key :: Unique
1646 hetmet_brak_key = mkPreludeMiscIdUnique 161
1647 hetmet_esc_key = mkPreludeMiscIdUnique 162
1648 hetmet_csp_key = mkPreludeMiscIdUnique 163
1650 hetmet_pga_loopl_key :: Unique
1651 hetmet_pga_loopl_key = mkPreludeMiscIdUnique 164
1652 hetmet_pga_loopr_key :: Unique
1653 hetmet_pga_loopr_key = mkPreludeMiscIdUnique 165
1656 ---------------- Template Haskell -------------------
1657 -- USES IdUniques 200-499
1658 -----------------------------------------------------
1662 %************************************************************************
1664 \subsection{Standard groups of types}
1666 %************************************************************************
1669 numericTyKeys :: [Unique]
1678 kindKeys :: [Unique]
1679 kindKeys = [ liftedTypeKindTyConKey
1680 , openTypeKindTyConKey
1681 , unliftedTypeKindTyConKey
1682 , ubxTupleKindTyConKey
1683 , argTypeKindTyConKey ]
1687 %************************************************************************
1689 \subsection[Class-std-groups]{Standard groups of Prelude classes}
1691 %************************************************************************
1693 NOTE: @Eq@ and @Text@ do need to appear in @standardClasses@
1694 even though every numeric class has these two as a superclass,
1695 because the list of ambiguous dictionaries hasn't been simplified.
1698 numericClassKeys :: [Unique]
1704 ++ fractionalClassKeys
1706 fractionalClassKeys :: [Unique]
1707 fractionalClassKeys =
1708 [ fractionalClassKey
1714 -- the strictness analyser needs to know about numeric types
1715 -- (see SaAbsInt.lhs)
1716 needsDataDeclCtxtClassKeys :: [Unique]
1717 needsDataDeclCtxtClassKeys = -- see comments in TcDeriv
1721 -- The "standard classes" are used in defaulting (Haskell 98 report 4.3.4),
1722 -- and are: "classes defined in the Prelude or a standard library"
1723 standardClassKeys :: [Unique]
1724 standardClassKeys = derivableClassKeys ++ numericClassKeys
1725 ++ [randomClassKey, randomGenClassKey,
1727 monadClassKey, monadPlusClassKey,
1729 applicativeClassKey, foldableClassKey, traversableClassKey
1733 @derivableClassKeys@ is also used in checking \tr{deriving} constructs
1737 derivableClassKeys :: [Unique]
1739 = [ eqClassKey, ordClassKey, enumClassKey, ixClassKey,
1740 boundedClassKey, showClassKey, readClassKey ]