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 assocation 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,
168 arrAName, composeAName, firstAName,
169 appAName, choiceAName, loopAName,
187 unpackCStringName, unpackCStringAppendName,
188 unpackCStringFoldrName, unpackCStringUtf8Name,
191 concatName, filterName, mapName,
192 zipName, foldrName, buildName, augmentName, appendName,
194 dollarName, -- The ($) apply function
196 -- FFI primitive types that are not wired-in.
197 stablePtrTyConName, ptrTyConName, funPtrTyConName,
198 int8TyConName, int16TyConName, int32TyConName, int64TyConName,
199 wordTyConName, word8TyConName, word16TyConName, word32TyConName, word64TyConName,
202 otherwiseIdName, inlineIdName,
203 plusIntegerName, timesIntegerName,
204 eqStringName, assertName, breakpointName, breakpointCondName,
205 breakpointAutoName, opaqueTyConName,
206 assertErrorName, runSTRepName,
207 printName, fstName, sndName,
210 monadFixClassName, mfixName,
213 randomClassName, randomGenClassName, monadPlusClassName,
216 hetmet_brak_name, hetmet_esc_name, hetmet_csp_name, hetmet_flatten_name, hetmet_unflatten_name, hetmet_flattened_id_name,
217 hetmet_guest_integer_literal_name, hetmet_guest_string_literal_name,
218 hetmet_guest_char_literal_name,
220 hetmet_PGArrow_unit_name,
221 hetmet_PGArrow_tensor_name,
222 hetmet_PGArrow_exponent_name,
224 hetmet_pga_comp_name,
225 hetmet_pga_first_name,
226 hetmet_pga_second_name,
227 hetmet_pga_cancell_name,
228 hetmet_pga_cancelr_name,
229 hetmet_pga_uncancell_name,
230 hetmet_pga_uncancelr_name,
231 hetmet_pga_assoc_name,
232 hetmet_pga_unassoc_name,
233 hetmet_pga_copy_name,
234 hetmet_pga_drop_name,
235 hetmet_pga_swap_name,
236 hetmet_pga_applyl_name,
237 hetmet_pga_applyr_name,
238 hetmet_pga_curryl_name,
239 hetmet_pga_curryr_name,
241 -- Annotation type checking
242 toAnnotationWrapperName
245 , eitherTyConName, leftDataConName, rightDataConName
248 , objectTyConName, marshalObjectName, unmarshalObjectName
249 , marshalStringName, unmarshalStringName, checkDotnetResName
252 genericTyConNames :: [Name]
253 genericTyConNames = [crossTyConName, plusTyConName, genUnitTyConName]
255 -- Know names from the DPH package which vary depending on the selected DPH backend.
257 dphKnownKeyNames :: PackageId -> [Name]
258 dphKnownKeyNames dphPkg
261 -- Parallel array operations
262 nullPName, lengthPName, replicatePName, singletonPName, mapPName,
263 filterPName, zipPName, crossMapPName, indexPName,
264 toPName, emptyPName, appPName,
265 enumFromToPName, enumFromThenToPName
271 %************************************************************************
273 \subsection{Module names}
275 %************************************************************************
278 --MetaHaskell Extension Add a new module here
281 pRELUDE = mkBaseModule_ pRELUDE_NAME
283 gHC_PRIM, gHC_TYPES, gHC_UNIT, gHC_ORDERING, gHC_GENERICS,
285 gHC_CLASSES, gHC_BASE, gHC_ENUM,
286 gHC_SHOW, gHC_READ, gHC_NUM, gHC_INTEGER, gHC_INTEGER_TYPE, gHC_LIST,
287 gHC_HETMET_CODETYPES,
290 gHC_TUPLE, dATA_TUPLE, dATA_EITHER, dATA_STRING, dATA_FOLDABLE, dATA_TRAVERSABLE,
291 gHC_PACK, gHC_CONC, gHC_IO, gHC_IO_Exception,
292 gHC_ST, gHC_ARR, gHC_STABLE, gHC_ADDR, gHC_PTR, gHC_ERR, gHC_REAL,
293 gHC_FLOAT, gHC_TOP_HANDLER, sYSTEM_IO, dYNAMIC, tYPEABLE, gENERICS,
294 dOTNET, rEAD_PREC, lEX, gHC_INT, gHC_WORD, mONAD, mONAD_FIX, aRROW, cONTROL_APPLICATIVE,
295 gHC_DESUGAR, rANDOM, gHC_EXTS, cONTROL_EXCEPTION_BASE :: Module
297 gHC_PRIM = mkPrimModule (fsLit "GHC.Prim") -- Primitive types and values
298 gHC_TYPES = mkPrimModule (fsLit "GHC.Types")
299 gHC_UNIT = mkPrimModule (fsLit "GHC.Unit")
300 gHC_ORDERING = mkPrimModule (fsLit "GHC.Ordering")
301 gHC_GENERICS = mkPrimModule (fsLit "GHC.Generics")
302 gHC_MAGIC = mkPrimModule (fsLit "GHC.Magic")
304 gHC_CLASSES = mkBaseModule (fsLit "GHC.Classes")
305 gHC_BASE = mkBaseModule (fsLit "GHC.Base")
306 gHC_ENUM = mkBaseModule (fsLit "GHC.Enum")
307 gHC_SHOW = mkBaseModule (fsLit "GHC.Show")
308 gHC_READ = mkBaseModule (fsLit "GHC.Read")
309 gHC_NUM = mkBaseModule (fsLit "GHC.Num")
310 gHC_INTEGER = mkIntegerModule (fsLit "GHC.Integer")
311 gHC_INTEGER_TYPE= mkIntegerModule (fsLit "GHC.Integer.Type")
312 gHC_HETMET_CODETYPES = mkBaseModule (fsLit "GHC.HetMet.CodeTypes")
313 gHC_HETMET_PRIVATE = mkBaseModule (fsLit "GHC.HetMet.Private")
314 gHC_HETMET_GARROW = mkBaseModule (fsLit "GHC.HetMet.GArrow")
315 gHC_LIST = mkBaseModule (fsLit "GHC.List")
316 gHC_TUPLE = mkPrimModule (fsLit "GHC.Tuple")
317 dATA_TUPLE = mkBaseModule (fsLit "Data.Tuple")
318 dATA_EITHER = mkBaseModule (fsLit "Data.Either")
319 dATA_STRING = mkBaseModule (fsLit "Data.String")
320 dATA_FOLDABLE = mkBaseModule (fsLit "Data.Foldable")
321 dATA_TRAVERSABLE= mkBaseModule (fsLit "Data.Traversable")
322 gHC_PACK = mkBaseModule (fsLit "GHC.Pack")
323 gHC_CONC = mkBaseModule (fsLit "GHC.Conc")
324 gHC_IO = mkBaseModule (fsLit "GHC.IO")
325 gHC_IO_Exception = mkBaseModule (fsLit "GHC.IO.Exception")
326 gHC_ST = mkBaseModule (fsLit "GHC.ST")
327 gHC_ARR = mkBaseModule (fsLit "GHC.Arr")
328 gHC_STABLE = mkBaseModule (fsLit "GHC.Stable")
329 gHC_ADDR = mkBaseModule (fsLit "GHC.Addr")
330 gHC_PTR = mkBaseModule (fsLit "GHC.Ptr")
331 gHC_ERR = mkBaseModule (fsLit "GHC.Err")
332 gHC_REAL = mkBaseModule (fsLit "GHC.Real")
333 gHC_FLOAT = mkBaseModule (fsLit "GHC.Float")
334 gHC_TOP_HANDLER = mkBaseModule (fsLit "GHC.TopHandler")
335 sYSTEM_IO = mkBaseModule (fsLit "System.IO")
336 dYNAMIC = mkBaseModule (fsLit "Data.Dynamic")
337 tYPEABLE = mkBaseModule (fsLit "Data.Typeable")
338 gENERICS = mkBaseModule (fsLit "Data.Data")
339 dOTNET = mkBaseModule (fsLit "GHC.Dotnet")
340 rEAD_PREC = mkBaseModule (fsLit "Text.ParserCombinators.ReadPrec")
341 lEX = mkBaseModule (fsLit "Text.Read.Lex")
342 gHC_INT = mkBaseModule (fsLit "GHC.Int")
343 gHC_WORD = mkBaseModule (fsLit "GHC.Word")
344 mONAD = mkBaseModule (fsLit "Control.Monad")
345 mONAD_FIX = mkBaseModule (fsLit "Control.Monad.Fix")
346 aRROW = mkBaseModule (fsLit "Control.Arrow")
347 cONTROL_APPLICATIVE = mkBaseModule (fsLit "Control.Applicative")
348 gHC_DESUGAR = mkBaseModule (fsLit "GHC.Desugar")
349 rANDOM = mkBaseModule (fsLit "System.Random")
350 gHC_EXTS = mkBaseModule (fsLit "GHC.Exts")
351 cONTROL_EXCEPTION_BASE = mkBaseModule (fsLit "Control.Exception.Base")
353 gHC_PARR :: PackageId -> Module
354 gHC_PARR pkg = mkModule pkg (mkModuleNameFS (fsLit "Data.Array.Parallel"))
357 gHC_PARR' = mkBaseModule (fsLit "GHC.PArr")
359 mAIN, rOOT_MAIN :: Module
360 mAIN = mkMainModule_ mAIN_NAME
361 rOOT_MAIN = mkMainModule (fsLit ":Main") -- Root module for initialisation
363 -- The ':xxx' makes a module name that the user can never
364 -- use himself. The z-encoding for ':' is "ZC", so the z-encoded
365 -- module name still starts with a capital letter, which keeps
366 -- the z-encoded version consistent.
367 iNTERACTIVE :: Module
368 iNTERACTIVE = mkMainModule (fsLit ":Interactive")
370 pRELUDE_NAME, mAIN_NAME :: ModuleName
371 pRELUDE_NAME = mkModuleNameFS (fsLit "Prelude")
372 mAIN_NAME = mkModuleNameFS (fsLit "Main")
374 mkPrimModule :: FastString -> Module
375 mkPrimModule m = mkModule primPackageId (mkModuleNameFS m)
377 mkIntegerModule :: FastString -> Module
378 mkIntegerModule m = mkModule integerPackageId (mkModuleNameFS m)
380 mkBaseModule :: FastString -> Module
381 mkBaseModule m = mkModule basePackageId (mkModuleNameFS m)
383 mkBaseModule_ :: ModuleName -> Module
384 mkBaseModule_ m = mkModule basePackageId m
386 mkMainModule :: FastString -> Module
387 mkMainModule m = mkModule mainPackageId (mkModuleNameFS m)
389 mkMainModule_ :: ModuleName -> Module
390 mkMainModule_ m = mkModule mainPackageId m
393 %************************************************************************
395 \subsection{Constructing the names of tuples
397 %************************************************************************
400 mkTupleModule :: Boxity -> Arity -> Module
401 mkTupleModule Boxed 0 = gHC_UNIT
402 mkTupleModule Boxed _ = gHC_TUPLE
403 mkTupleModule Unboxed _ = gHC_PRIM
407 %************************************************************************
411 %************************************************************************
414 main_RDR_Unqual :: RdrName
415 main_RDR_Unqual = mkUnqual varName (fsLit "main")
416 -- We definitely don't want an Orig RdrName, because
417 -- main might, in principle, be imported into module Main
419 forall_tv_RDR, dot_tv_RDR :: RdrName
420 forall_tv_RDR = mkUnqual tvName (fsLit "forall")
421 dot_tv_RDR = mkUnqual tvName (fsLit ".")
423 eq_RDR, ge_RDR, ne_RDR, le_RDR, lt_RDR, gt_RDR, compare_RDR,
424 ltTag_RDR, eqTag_RDR, gtTag_RDR :: RdrName
425 eq_RDR = nameRdrName eqName
426 ge_RDR = nameRdrName geName
427 ne_RDR = varQual_RDR gHC_CLASSES (fsLit "/=")
428 le_RDR = varQual_RDR gHC_CLASSES (fsLit "<=")
429 lt_RDR = varQual_RDR gHC_CLASSES (fsLit "<")
430 gt_RDR = varQual_RDR gHC_CLASSES (fsLit ">")
431 compare_RDR = varQual_RDR gHC_CLASSES (fsLit "compare")
432 ltTag_RDR = dataQual_RDR gHC_ORDERING (fsLit "LT")
433 eqTag_RDR = dataQual_RDR gHC_ORDERING (fsLit "EQ")
434 gtTag_RDR = dataQual_RDR gHC_ORDERING (fsLit "GT")
436 eqClass_RDR, numClass_RDR, ordClass_RDR, enumClass_RDR, monadClass_RDR
438 eqClass_RDR = nameRdrName eqClassName
439 numClass_RDR = nameRdrName numClassName
440 ordClass_RDR = nameRdrName ordClassName
441 enumClass_RDR = nameRdrName enumClassName
442 monadClass_RDR = nameRdrName monadClassName
444 map_RDR, append_RDR :: RdrName
445 map_RDR = varQual_RDR gHC_BASE (fsLit "map")
446 append_RDR = varQual_RDR gHC_BASE (fsLit "++")
448 foldr_RDR, build_RDR, returnM_RDR, bindM_RDR, failM_RDR :: RdrName
449 foldr_RDR = nameRdrName foldrName
450 build_RDR = nameRdrName buildName
451 returnM_RDR = nameRdrName returnMName
452 bindM_RDR = nameRdrName bindMName
453 failM_RDR = nameRdrName failMName
455 left_RDR, right_RDR :: RdrName
456 left_RDR = nameRdrName leftDataConName
457 right_RDR = nameRdrName rightDataConName
459 fromEnum_RDR, toEnum_RDR :: RdrName
460 fromEnum_RDR = varQual_RDR gHC_ENUM (fsLit "fromEnum")
461 toEnum_RDR = varQual_RDR gHC_ENUM (fsLit "toEnum")
463 enumFrom_RDR, enumFromTo_RDR, enumFromThen_RDR, enumFromThenTo_RDR :: RdrName
464 enumFrom_RDR = nameRdrName enumFromName
465 enumFromTo_RDR = nameRdrName enumFromToName
466 enumFromThen_RDR = nameRdrName enumFromThenName
467 enumFromThenTo_RDR = nameRdrName enumFromThenToName
469 ratioDataCon_RDR, plusInteger_RDR, timesInteger_RDR :: RdrName
470 ratioDataCon_RDR = nameRdrName ratioDataConName
471 plusInteger_RDR = nameRdrName plusIntegerName
472 timesInteger_RDR = nameRdrName timesIntegerName
474 ioDataCon_RDR :: RdrName
475 ioDataCon_RDR = nameRdrName ioDataConName
477 eqString_RDR, unpackCString_RDR, unpackCStringFoldr_RDR,
478 unpackCStringUtf8_RDR :: RdrName
479 eqString_RDR = nameRdrName eqStringName
480 unpackCString_RDR = nameRdrName unpackCStringName
481 unpackCStringFoldr_RDR = nameRdrName unpackCStringFoldrName
482 unpackCStringUtf8_RDR = nameRdrName unpackCStringUtf8Name
484 newStablePtr_RDR, wordDataCon_RDR :: RdrName
485 newStablePtr_RDR = nameRdrName newStablePtrName
486 wordDataCon_RDR = dataQual_RDR gHC_WORD (fsLit "W#")
488 bindIO_RDR, returnIO_RDR :: RdrName
489 bindIO_RDR = nameRdrName bindIOName
490 returnIO_RDR = nameRdrName returnIOName
492 fromInteger_RDR, fromRational_RDR, minus_RDR, times_RDR, plus_RDR :: RdrName
493 fromInteger_RDR = nameRdrName fromIntegerName
494 fromRational_RDR = nameRdrName fromRationalName
495 minus_RDR = nameRdrName minusName
496 times_RDR = varQual_RDR gHC_NUM (fsLit "*")
497 plus_RDR = varQual_RDR gHC_NUM (fsLit "+")
499 fromString_RDR :: RdrName
500 fromString_RDR = nameRdrName fromStringName
502 compose_RDR :: RdrName
503 compose_RDR = varQual_RDR gHC_BASE (fsLit ".")
505 not_RDR, getTag_RDR, succ_RDR, pred_RDR, minBound_RDR, maxBound_RDR,
506 and_RDR, range_RDR, inRange_RDR, index_RDR,
507 unsafeIndex_RDR, unsafeRangeSize_RDR :: RdrName
508 and_RDR = varQual_RDR gHC_CLASSES (fsLit "&&")
509 not_RDR = varQual_RDR gHC_CLASSES (fsLit "not")
510 getTag_RDR = varQual_RDR gHC_BASE (fsLit "getTag")
511 succ_RDR = varQual_RDR gHC_ENUM (fsLit "succ")
512 pred_RDR = varQual_RDR gHC_ENUM (fsLit "pred")
513 minBound_RDR = varQual_RDR gHC_ENUM (fsLit "minBound")
514 maxBound_RDR = varQual_RDR gHC_ENUM (fsLit "maxBound")
515 range_RDR = varQual_RDR gHC_ARR (fsLit "range")
516 inRange_RDR = varQual_RDR gHC_ARR (fsLit "inRange")
517 index_RDR = varQual_RDR gHC_ARR (fsLit "index")
518 unsafeIndex_RDR = varQual_RDR gHC_ARR (fsLit "unsafeIndex")
519 unsafeRangeSize_RDR = varQual_RDR gHC_ARR (fsLit "unsafeRangeSize")
521 readList_RDR, readListDefault_RDR, readListPrec_RDR, readListPrecDefault_RDR,
522 readPrec_RDR, parens_RDR, choose_RDR, lexP_RDR :: RdrName
523 readList_RDR = varQual_RDR gHC_READ (fsLit "readList")
524 readListDefault_RDR = varQual_RDR gHC_READ (fsLit "readListDefault")
525 readListPrec_RDR = varQual_RDR gHC_READ (fsLit "readListPrec")
526 readListPrecDefault_RDR = varQual_RDR gHC_READ (fsLit "readListPrecDefault")
527 readPrec_RDR = varQual_RDR gHC_READ (fsLit "readPrec")
528 parens_RDR = varQual_RDR gHC_READ (fsLit "parens")
529 choose_RDR = varQual_RDR gHC_READ (fsLit "choose")
530 lexP_RDR = varQual_RDR gHC_READ (fsLit "lexP")
532 punc_RDR, ident_RDR, symbol_RDR :: RdrName
533 punc_RDR = dataQual_RDR lEX (fsLit "Punc")
534 ident_RDR = dataQual_RDR lEX (fsLit "Ident")
535 symbol_RDR = dataQual_RDR lEX (fsLit "Symbol")
537 step_RDR, alt_RDR, reset_RDR, prec_RDR :: RdrName
538 step_RDR = varQual_RDR rEAD_PREC (fsLit "step")
539 alt_RDR = varQual_RDR rEAD_PREC (fsLit "+++")
540 reset_RDR = varQual_RDR rEAD_PREC (fsLit "reset")
541 prec_RDR = varQual_RDR rEAD_PREC (fsLit "prec")
543 showList_RDR, showList___RDR, showsPrec_RDR, showString_RDR,
544 showSpace_RDR, showParen_RDR :: RdrName
545 showList_RDR = varQual_RDR gHC_SHOW (fsLit "showList")
546 showList___RDR = varQual_RDR gHC_SHOW (fsLit "showList__")
547 showsPrec_RDR = varQual_RDR gHC_SHOW (fsLit "showsPrec")
548 showString_RDR = varQual_RDR gHC_SHOW (fsLit "showString")
549 showSpace_RDR = varQual_RDR gHC_SHOW (fsLit "showSpace")
550 showParen_RDR = varQual_RDR gHC_SHOW (fsLit "showParen")
552 typeOf_RDR, mkTypeRep_RDR, mkTyConRep_RDR :: RdrName
553 typeOf_RDR = varQual_RDR tYPEABLE (fsLit "typeOf")
554 mkTypeRep_RDR = varQual_RDR tYPEABLE (fsLit "mkTyConApp")
555 mkTyConRep_RDR = varQual_RDR tYPEABLE (fsLit "mkTyCon")
557 undefined_RDR :: RdrName
558 undefined_RDR = varQual_RDR gHC_ERR (fsLit "undefined")
560 crossDataCon_RDR, inlDataCon_RDR, inrDataCon_RDR, genUnitDataCon_RDR :: RdrName
561 crossDataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit ":*:")
562 inlDataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "Inl")
563 inrDataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "Inr")
564 genUnitDataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "Unit")
566 fmap_RDR, pure_RDR, ap_RDR, foldable_foldr_RDR, traverse_RDR :: RdrName
567 fmap_RDR = varQual_RDR gHC_BASE (fsLit "fmap")
568 pure_RDR = varQual_RDR cONTROL_APPLICATIVE (fsLit "pure")
569 ap_RDR = varQual_RDR cONTROL_APPLICATIVE (fsLit "<*>")
570 foldable_foldr_RDR = varQual_RDR dATA_FOLDABLE (fsLit "foldr")
571 traverse_RDR = varQual_RDR dATA_TRAVERSABLE (fsLit "traverse")
573 ----------------------
574 varQual_RDR, tcQual_RDR, clsQual_RDR, dataQual_RDR
575 :: Module -> FastString -> RdrName
576 varQual_RDR mod str = mkOrig mod (mkOccNameFS varName str)
577 tcQual_RDR mod str = mkOrig mod (mkOccNameFS tcName str)
578 clsQual_RDR mod str = mkOrig mod (mkOccNameFS clsName str)
579 dataQual_RDR mod str = mkOrig mod (mkOccNameFS dataName str)
582 %************************************************************************
584 \subsection{Known-key names}
586 %************************************************************************
588 Many of these Names are not really "built in", but some parts of the
589 compiler (notably the deriving mechanism) need to mention their names,
590 and it's convenient to write them all down in one place.
592 --MetaHaskell Extension add the constrs and the lower case case
593 -- guys as well (perhaps) e.g. see trueDataConName below
598 wildCardName = mkSystemVarName wildCardKey (fsLit "wild")
600 runMainIOName :: Name
601 runMainIOName = varQual gHC_TOP_HANDLER (fsLit "runMainIO") runMainKey
603 orderingTyConName :: Name
604 orderingTyConName = tcQual gHC_ORDERING (fsLit "Ordering") orderingTyConKey
606 eitherTyConName, leftDataConName, rightDataConName :: Name
607 eitherTyConName = tcQual dATA_EITHER (fsLit "Either") eitherTyConKey
608 leftDataConName = conName dATA_EITHER (fsLit "Left") leftDataConKey
609 rightDataConName = conName dATA_EITHER (fsLit "Right") rightDataConKey
612 crossTyConName, plusTyConName, genUnitTyConName :: Name
613 crossTyConName = tcQual gHC_GENERICS (fsLit ":*:") crossTyConKey
614 plusTyConName = tcQual gHC_GENERICS (fsLit ":+:") plusTyConKey
615 genUnitTyConName = tcQual gHC_GENERICS (fsLit "Unit") genUnitTyConKey
617 -- Base strings Strings
618 unpackCStringName, unpackCStringAppendName, unpackCStringFoldrName,
619 unpackCStringUtf8Name, eqStringName, stringTyConName :: Name
620 unpackCStringName = varQual gHC_BASE (fsLit "unpackCString#") unpackCStringIdKey
621 unpackCStringAppendName = varQual gHC_BASE (fsLit "unpackAppendCString#") unpackCStringAppendIdKey
622 unpackCStringFoldrName = varQual gHC_BASE (fsLit "unpackFoldrCString#") unpackCStringFoldrIdKey
623 unpackCStringUtf8Name = varQual gHC_BASE (fsLit "unpackCStringUtf8#") unpackCStringUtf8IdKey
624 eqStringName = varQual gHC_BASE (fsLit "eqString") eqStringIdKey
625 stringTyConName = tcQual gHC_BASE (fsLit "String") stringTyConKey
627 -- The 'inline' function
629 inlineIdName = varQual gHC_MAGIC (fsLit "inline") inlineIdKey
631 -- Base classes (Eq, Ord, Functor)
632 eqClassName, eqName, ordClassName, geName, functorClassName :: Name
633 eqClassName = clsQual gHC_CLASSES (fsLit "Eq") eqClassKey
634 eqName = methName gHC_CLASSES (fsLit "==") eqClassOpKey
635 ordClassName = clsQual gHC_CLASSES (fsLit "Ord") ordClassKey
636 geName = methName gHC_CLASSES (fsLit ">=") geClassOpKey
637 functorClassName = clsQual gHC_BASE (fsLit "Functor") functorClassKey
640 monadClassName, thenMName, bindMName, returnMName, failMName :: Name
641 monadClassName = clsQual gHC_BASE (fsLit "Monad") monadClassKey
642 thenMName = methName gHC_BASE (fsLit ">>") thenMClassOpKey
643 bindMName = methName gHC_BASE (fsLit ">>=") bindMClassOpKey
644 returnMName = methName gHC_BASE (fsLit "return") returnMClassOpKey
645 failMName = methName gHC_BASE (fsLit "fail") failMClassOpKey
647 -- Classes (Applicative, Foldable, Traversable)
648 applicativeClassName, foldableClassName, traversableClassName :: Name
649 applicativeClassName = clsQual cONTROL_APPLICATIVE (fsLit "Applicative") applicativeClassKey
650 foldableClassName = clsQual dATA_FOLDABLE (fsLit "Foldable") foldableClassKey
651 traversableClassName = clsQual dATA_TRAVERSABLE (fsLit "Traversable") traversableClassKey
653 -- Functions for GHC extensions
654 groupWithName :: Name
655 groupWithName = varQual gHC_EXTS (fsLit "groupWith") groupWithIdKey
657 -- Random PrelBase functions
658 fromStringName, otherwiseIdName, foldrName, buildName, augmentName,
659 mapName, appendName, assertName,
660 breakpointName, breakpointCondName, breakpointAutoName,
661 dollarName, opaqueTyConName :: Name
662 fromStringName = methName dATA_STRING (fsLit "fromString") fromStringClassOpKey
663 otherwiseIdName = varQual gHC_BASE (fsLit "otherwise") otherwiseIdKey
664 foldrName = varQual gHC_BASE (fsLit "foldr") foldrIdKey
665 buildName = varQual gHC_BASE (fsLit "build") buildIdKey
666 augmentName = varQual gHC_BASE (fsLit "augment") augmentIdKey
667 mapName = varQual gHC_BASE (fsLit "map") mapIdKey
668 appendName = varQual gHC_BASE (fsLit "++") appendIdKey
669 dollarName = varQual gHC_BASE (fsLit "$") dollarIdKey
670 assertName = varQual gHC_BASE (fsLit "assert") assertIdKey
671 breakpointName = varQual gHC_BASE (fsLit "breakpoint") breakpointIdKey
672 breakpointCondName= varQual gHC_BASE (fsLit "breakpointCond") breakpointCondIdKey
673 breakpointAutoName= varQual gHC_BASE (fsLit "breakpointAuto") breakpointAutoIdKey
674 opaqueTyConName = tcQual gHC_BASE (fsLit "Opaque") opaqueTyConKey
676 breakpointJumpName :: Name
680 (mkOccNameFS varName (fsLit "breakpointJump"))
682 breakpointCondJumpName :: Name
683 breakpointCondJumpName
685 breakpointCondJumpIdKey
686 (mkOccNameFS varName (fsLit "breakpointCondJump"))
688 breakpointAutoJumpName :: Name
689 breakpointAutoJumpName
691 breakpointAutoJumpIdKey
692 (mkOccNameFS varName (fsLit "breakpointAutoJump"))
696 fstName, sndName :: Name
697 fstName = varQual dATA_TUPLE (fsLit "fst") fstIdKey
698 sndName = varQual dATA_TUPLE (fsLit "snd") sndIdKey
701 numClassName, fromIntegerName, minusName, negateName, plusIntegerName,
703 integerTyConName, smallIntegerName :: Name
704 numClassName = clsQual gHC_NUM (fsLit "Num") numClassKey
705 fromIntegerName = methName gHC_NUM (fsLit "fromInteger") fromIntegerClassOpKey
706 minusName = methName gHC_NUM (fsLit "-") minusClassOpKey
707 negateName = methName gHC_NUM (fsLit "negate") negateClassOpKey
708 plusIntegerName = varQual gHC_INTEGER (fsLit "plusInteger") plusIntegerIdKey
709 timesIntegerName = varQual gHC_INTEGER (fsLit "timesInteger") timesIntegerIdKey
710 integerTyConName = tcQual gHC_INTEGER_TYPE (fsLit "Integer") integerTyConKey
711 smallIntegerName = varQual gHC_INTEGER (fsLit "smallInteger") smallIntegerIdKey
713 -- GHC.Real types and classes
714 rationalTyConName, ratioTyConName, ratioDataConName, realClassName,
715 integralClassName, realFracClassName, fractionalClassName,
716 fromRationalName, toIntegerName, toRationalName, fromIntegralName,
717 realToFracName :: Name
718 rationalTyConName = tcQual gHC_REAL (fsLit "Rational") rationalTyConKey
719 ratioTyConName = tcQual gHC_REAL (fsLit "Ratio") ratioTyConKey
720 ratioDataConName = conName gHC_REAL (fsLit ":%") ratioDataConKey
721 realClassName = clsQual gHC_REAL (fsLit "Real") realClassKey
722 integralClassName = clsQual gHC_REAL (fsLit "Integral") integralClassKey
723 realFracClassName = clsQual gHC_REAL (fsLit "RealFrac") realFracClassKey
724 fractionalClassName = clsQual gHC_REAL (fsLit "Fractional") fractionalClassKey
725 fromRationalName = methName gHC_REAL (fsLit "fromRational") fromRationalClassOpKey
726 toIntegerName = methName gHC_REAL (fsLit "toInteger") toIntegerClassOpKey
727 toRationalName = methName gHC_REAL (fsLit "toRational") toRationalClassOpKey
728 fromIntegralName = varQual gHC_REAL (fsLit "fromIntegral") fromIntegralIdKey
729 realToFracName = varQual gHC_REAL (fsLit "realToFrac") realToFracIdKey
732 floatingClassName, realFloatClassName :: Name
733 floatingClassName = clsQual gHC_FLOAT (fsLit "Floating") floatingClassKey
734 realFloatClassName = clsQual gHC_FLOAT (fsLit "RealFloat") realFloatClassKey
738 ixClassName = clsQual gHC_ARR (fsLit "Ix") ixClassKey
741 typeableClassName, typeable1ClassName, typeable2ClassName,
742 typeable3ClassName, typeable4ClassName, typeable5ClassName,
743 typeable6ClassName, typeable7ClassName :: Name
744 typeableClassName = clsQual tYPEABLE (fsLit "Typeable") typeableClassKey
745 typeable1ClassName = clsQual tYPEABLE (fsLit "Typeable1") typeable1ClassKey
746 typeable2ClassName = clsQual tYPEABLE (fsLit "Typeable2") typeable2ClassKey
747 typeable3ClassName = clsQual tYPEABLE (fsLit "Typeable3") typeable3ClassKey
748 typeable4ClassName = clsQual tYPEABLE (fsLit "Typeable4") typeable4ClassKey
749 typeable5ClassName = clsQual tYPEABLE (fsLit "Typeable5") typeable5ClassKey
750 typeable6ClassName = clsQual tYPEABLE (fsLit "Typeable6") typeable6ClassKey
751 typeable7ClassName = clsQual tYPEABLE (fsLit "Typeable7") typeable7ClassKey
753 typeableClassNames :: [Name]
754 typeableClassNames = [ typeableClassName, typeable1ClassName, typeable2ClassName
755 , typeable3ClassName, typeable4ClassName, typeable5ClassName
756 , typeable6ClassName, typeable7ClassName ]
759 dataClassName :: Name
760 dataClassName = clsQual gENERICS (fsLit "Data") dataClassKey
763 assertErrorName :: Name
764 assertErrorName = varQual gHC_IO_Exception (fsLit "assertError") assertErrorIdKey
766 -- Enum module (Enum, Bounded)
767 enumClassName, enumFromName, enumFromToName, enumFromThenName,
768 enumFromThenToName, boundedClassName :: Name
769 enumClassName = clsQual gHC_ENUM (fsLit "Enum") enumClassKey
770 enumFromName = methName gHC_ENUM (fsLit "enumFrom") enumFromClassOpKey
771 enumFromToName = methName gHC_ENUM (fsLit "enumFromTo") enumFromToClassOpKey
772 enumFromThenName = methName gHC_ENUM (fsLit "enumFromThen") enumFromThenClassOpKey
773 enumFromThenToName = methName gHC_ENUM (fsLit "enumFromThenTo") enumFromThenToClassOpKey
774 boundedClassName = clsQual gHC_ENUM (fsLit "Bounded") boundedClassKey
777 concatName, filterName, zipName :: Name
778 concatName = varQual gHC_LIST (fsLit "concat") concatIdKey
779 filterName = varQual gHC_LIST (fsLit "filter") filterIdKey
780 zipName = varQual gHC_LIST (fsLit "zip") zipIdKey
783 showClassName :: Name
784 showClassName = clsQual gHC_SHOW (fsLit "Show") showClassKey
787 readClassName :: Name
788 readClassName = clsQual gHC_READ (fsLit "Read") readClassKey
790 -- parallel array types and functions
791 enumFromToPName, enumFromThenToPName, nullPName, lengthPName,
792 singletonPName, replicatePName, mapPName, filterPName,
793 zipPName, crossMapPName, indexPName, toPName,
794 emptyPName, appPName :: PackageId -> Name
795 enumFromToPName pkg = varQual (gHC_PARR pkg) (fsLit "enumFromToP") enumFromToPIdKey
796 enumFromThenToPName pkg = varQual (gHC_PARR pkg) (fsLit "enumFromThenToP") enumFromThenToPIdKey
797 nullPName pkg = varQual (gHC_PARR pkg) (fsLit "nullP") nullPIdKey
798 lengthPName pkg = varQual (gHC_PARR pkg) (fsLit "lengthP") lengthPIdKey
799 singletonPName pkg = varQual (gHC_PARR pkg) (fsLit "singletonP") singletonPIdKey
800 replicatePName pkg = varQual (gHC_PARR pkg) (fsLit "replicateP") replicatePIdKey
801 mapPName pkg = varQual (gHC_PARR pkg) (fsLit "mapP") mapPIdKey
802 filterPName pkg = varQual (gHC_PARR pkg) (fsLit "filterP") filterPIdKey
803 zipPName pkg = varQual (gHC_PARR pkg) (fsLit "zipP") zipPIdKey
804 crossMapPName pkg = varQual (gHC_PARR pkg) (fsLit "crossMapP") crossMapPIdKey
805 indexPName pkg = varQual (gHC_PARR pkg) (fsLit "!:") indexPIdKey
806 toPName pkg = varQual (gHC_PARR pkg) (fsLit "toP") toPIdKey
807 emptyPName pkg = varQual (gHC_PARR pkg) (fsLit "emptyP") emptyPIdKey
808 appPName pkg = varQual (gHC_PARR pkg) (fsLit "+:+") appPIdKey
811 hetmet_brak_name, hetmet_esc_name, hetmet_csp_name, hetmet_flatten_name, hetmet_unflatten_name, hetmet_flattened_id_name :: Name
812 hetmet_guest_integer_literal_name, hetmet_guest_string_literal_name, hetmet_guest_char_literal_name :: Name
813 hetmet_brak_name = varQual gHC_HETMET_CODETYPES (fsLit "hetmet_brak") hetmet_brak_key
814 hetmet_esc_name = varQual gHC_HETMET_CODETYPES (fsLit "hetmet_esc") hetmet_esc_key
815 hetmet_csp_name = varQual gHC_HETMET_CODETYPES (fsLit "hetmet_csp") hetmet_csp_key
816 hetmet_flatten_name = varQual gHC_HETMET_CODETYPES (fsLit "pga_flatten") hetmet_flatten_key
817 hetmet_unflatten_name = varQual gHC_HETMET_CODETYPES (fsLit "pga_unflatten") hetmet_unflatten_key
818 hetmet_flattened_id_name = varQual gHC_HETMET_CODETYPES (fsLit "pga_flattened_id") hetmet_flattened_id_key
819 hetmet_guest_integer_literal_name = varQual gHC_HETMET_CODETYPES (fsLit "guestIntegerLiteral") hetmet_guest_integer_literal_key
820 hetmet_guest_string_literal_name = varQual gHC_HETMET_CODETYPES (fsLit "guestStringLiteral") hetmet_guest_string_literal_key
821 hetmet_guest_char_literal_name = varQual gHC_HETMET_CODETYPES (fsLit "guestCharLiteral") hetmet_guest_char_literal_key
823 hetmet_PGArrow_name :: Name
824 hetmet_PGArrow_name = tcQual gHC_HETMET_PRIVATE (fsLit "PGArrow") hetmet_PGArrow_key
825 hetmet_PGArrow_unit_name :: Name
826 hetmet_PGArrow_unit_name = tcQual gHC_HETMET_GARROW (fsLit "GArrowUnit") hetmet_PGArrow_unit_key
827 hetmet_PGArrow_tensor_name :: Name
828 hetmet_PGArrow_tensor_name = tcQual gHC_HETMET_GARROW (fsLit "GArrowTensor") hetmet_PGArrow_tensor_key
829 hetmet_PGArrow_exponent_name :: Name
830 hetmet_PGArrow_exponent_name = tcQual gHC_HETMET_GARROW (fsLit "GArrowExponent") hetmet_PGArrow_exponent_key
831 hetmet_pga_id_name :: Name
832 hetmet_pga_id_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_id") hetmet_pga_id_key
833 hetmet_pga_comp_name :: Name
834 hetmet_pga_comp_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_comp") hetmet_pga_comp_key
835 hetmet_pga_first_name :: Name
836 hetmet_pga_first_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_first") hetmet_pga_first_key
837 hetmet_pga_second_name :: Name
838 hetmet_pga_second_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_second") hetmet_pga_second_key
839 hetmet_pga_cancell_name :: Name
840 hetmet_pga_cancell_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_cancell") hetmet_pga_cancell_key
841 hetmet_pga_cancelr_name :: Name
842 hetmet_pga_cancelr_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_cancelr") hetmet_pga_cancelr_key
843 hetmet_pga_uncancell_name :: Name
844 hetmet_pga_uncancell_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_uncancell") hetmet_pga_uncancell_key
845 hetmet_pga_uncancelr_name :: Name
846 hetmet_pga_uncancelr_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_uncancelr") hetmet_pga_uncancelr_key
847 hetmet_pga_assoc_name :: Name
848 hetmet_pga_assoc_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_assoc") hetmet_pga_assoc_key
849 hetmet_pga_unassoc_name :: Name
850 hetmet_pga_unassoc_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_unassoc") hetmet_pga_unassoc_key
851 hetmet_pga_copy_name :: Name
852 hetmet_pga_copy_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_copy") hetmet_pga_copy_key
853 hetmet_pga_drop_name :: Name
854 hetmet_pga_drop_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_drop") hetmet_pga_drop_key
855 hetmet_pga_swap_name :: Name
856 hetmet_pga_swap_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_swap") hetmet_pga_swap_key
857 hetmet_pga_applyl_name :: Name
858 hetmet_pga_applyl_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_applyl") hetmet_pga_applyl_key
859 hetmet_pga_applyr_name :: Name
860 hetmet_pga_applyr_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_applyr") hetmet_pga_applyr_key
861 hetmet_pga_curryl_name :: Name
862 hetmet_pga_curryl_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_curryl") hetmet_pga_curryl_key
863 hetmet_pga_curryr_name :: Name
864 hetmet_pga_curryr_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_curryr") hetmet_pga_curryr_key
867 ioTyConName, ioDataConName, thenIOName, bindIOName, returnIOName,
869 ioTyConName = tcQual gHC_TYPES (fsLit "IO") ioTyConKey
870 ioDataConName = conName gHC_TYPES (fsLit "IO") ioDataConKey
871 thenIOName = varQual gHC_BASE (fsLit "thenIO") thenIOIdKey
872 bindIOName = varQual gHC_BASE (fsLit "bindIO") bindIOIdKey
873 returnIOName = varQual gHC_BASE (fsLit "returnIO") returnIOIdKey
874 failIOName = varQual gHC_IO (fsLit "failIO") failIOIdKey
878 printName = varQual sYSTEM_IO (fsLit "print") printIdKey
880 -- Int, Word, and Addr things
881 int8TyConName, int16TyConName, int32TyConName, int64TyConName :: Name
882 int8TyConName = tcQual gHC_INT (fsLit "Int8") int8TyConKey
883 int16TyConName = tcQual gHC_INT (fsLit "Int16") int16TyConKey
884 int32TyConName = tcQual gHC_INT (fsLit "Int32") int32TyConKey
885 int64TyConName = tcQual gHC_INT (fsLit "Int64") int64TyConKey
888 word8TyConName, word16TyConName, word32TyConName, word64TyConName,
889 wordTyConName, wordDataConName :: Name
890 word8TyConName = tcQual gHC_WORD (fsLit "Word8") word8TyConKey
891 word16TyConName = tcQual gHC_WORD (fsLit "Word16") word16TyConKey
892 word32TyConName = tcQual gHC_WORD (fsLit "Word32") word32TyConKey
893 word64TyConName = tcQual gHC_WORD (fsLit "Word64") word64TyConKey
894 wordTyConName = tcQual gHC_WORD (fsLit "Word") wordTyConKey
895 wordDataConName = conName gHC_WORD (fsLit "W#") wordDataConKey
898 ptrTyConName, funPtrTyConName :: Name
899 ptrTyConName = tcQual gHC_PTR (fsLit "Ptr") ptrTyConKey
900 funPtrTyConName = tcQual gHC_PTR (fsLit "FunPtr") funPtrTyConKey
902 -- Foreign objects and weak pointers
903 stablePtrTyConName, newStablePtrName :: Name
904 stablePtrTyConName = tcQual gHC_STABLE (fsLit "StablePtr") stablePtrTyConKey
905 newStablePtrName = varQual gHC_STABLE (fsLit "newStablePtr") newStablePtrIdKey
909 runSTRepName = varQual gHC_ST (fsLit "runSTRep") runSTRepIdKey
911 -- Recursive-do notation
912 monadFixClassName, mfixName :: Name
913 monadFixClassName = clsQual mONAD_FIX (fsLit "MonadFix") monadFixClassKey
914 mfixName = methName mONAD_FIX (fsLit "mfix") mfixIdKey
917 arrAName, composeAName, firstAName, appAName, choiceAName, loopAName :: Name
918 arrAName = varQual aRROW (fsLit "arr") arrAIdKey
919 composeAName = varQual gHC_DESUGAR (fsLit ">>>") composeAIdKey
920 firstAName = varQual aRROW (fsLit "first") firstAIdKey
921 appAName = varQual aRROW (fsLit "app") appAIdKey
922 choiceAName = varQual aRROW (fsLit "|||") choiceAIdKey
923 loopAName = varQual aRROW (fsLit "loop") loopAIdKey
925 -- Annotation type checking
926 toAnnotationWrapperName :: Name
927 toAnnotationWrapperName = varQual gHC_DESUGAR (fsLit "toAnnotationWrapper") toAnnotationWrapperIdKey
929 -- Other classes, needed for type defaulting
930 monadPlusClassName, randomClassName, randomGenClassName,
931 isStringClassName :: Name
932 monadPlusClassName = clsQual mONAD (fsLit "MonadPlus") monadPlusClassKey
933 randomClassName = clsQual rANDOM (fsLit "Random") randomClassKey
934 randomGenClassName = clsQual rANDOM (fsLit "RandomGen") randomGenClassKey
935 isStringClassName = clsQual dATA_STRING (fsLit "IsString") isStringClassKey
938 objectTyConName :: Name
939 objectTyConName = tcQual dOTNET (fsLit "Object") objectTyConKey
940 -- objectTyConName was "wTcQual", but that's gone now, and
941 -- I can't see why it was wired in anyway...
942 unmarshalObjectName, marshalObjectName, marshalStringName,
943 unmarshalStringName, checkDotnetResName :: Name
944 unmarshalObjectName = varQual dOTNET (fsLit "unmarshalObject") unmarshalObjectIdKey
945 marshalObjectName = varQual dOTNET (fsLit "marshalObject") marshalObjectIdKey
946 marshalStringName = varQual dOTNET (fsLit "marshalString") marshalStringIdKey
947 unmarshalStringName = varQual dOTNET (fsLit "unmarshalString") unmarshalStringIdKey
948 checkDotnetResName = varQual dOTNET (fsLit "checkResult") checkDotnetResNameIdKey
951 %************************************************************************
953 \subsection{Local helpers}
955 %************************************************************************
957 All these are original names; hence mkOrig
960 varQual, tcQual, clsQual :: Module -> FastString -> Unique -> Name
961 varQual = mk_known_key_name varName
962 tcQual = mk_known_key_name tcName
963 clsQual = mk_known_key_name clsName
965 mk_known_key_name :: NameSpace -> Module -> FastString -> Unique -> Name
966 mk_known_key_name space modu str unique
967 = mkExternalName unique modu (mkOccNameFS space str) noSrcSpan
969 conName :: Module -> FastString -> Unique -> Name
970 conName modu occ unique
971 = mkExternalName unique modu (mkOccNameFS dataName occ) noSrcSpan
973 methName :: Module -> FastString -> Unique -> Name
974 methName modu occ unique
975 = mkExternalName unique modu (mkVarOccFS occ) noSrcSpan
978 %************************************************************************
980 \subsubsection[Uniques-prelude-Classes]{@Uniques@ for wired-in @Classes@}
982 %************************************************************************
983 --MetaHaskell extension hand allocate keys here
986 boundedClassKey, enumClassKey, eqClassKey, floatingClassKey,
987 fractionalClassKey, integralClassKey, monadClassKey, dataClassKey,
988 functorClassKey, numClassKey, ordClassKey, readClassKey, realClassKey,
989 realFloatClassKey, realFracClassKey, showClassKey, ixClassKey :: Unique
990 boundedClassKey = mkPreludeClassUnique 1
991 enumClassKey = mkPreludeClassUnique 2
992 eqClassKey = mkPreludeClassUnique 3
993 floatingClassKey = mkPreludeClassUnique 5
994 fractionalClassKey = mkPreludeClassUnique 6
995 integralClassKey = mkPreludeClassUnique 7
996 monadClassKey = mkPreludeClassUnique 8
997 dataClassKey = mkPreludeClassUnique 9
998 functorClassKey = mkPreludeClassUnique 10
999 numClassKey = mkPreludeClassUnique 11
1000 ordClassKey = mkPreludeClassUnique 12
1001 readClassKey = mkPreludeClassUnique 13
1002 realClassKey = mkPreludeClassUnique 14
1003 realFloatClassKey = mkPreludeClassUnique 15
1004 realFracClassKey = mkPreludeClassUnique 16
1005 showClassKey = mkPreludeClassUnique 17
1006 ixClassKey = mkPreludeClassUnique 18
1008 typeableClassKey, typeable1ClassKey, typeable2ClassKey, typeable3ClassKey,
1009 typeable4ClassKey, typeable5ClassKey, typeable6ClassKey, typeable7ClassKey
1011 typeableClassKey = mkPreludeClassUnique 20
1012 typeable1ClassKey = mkPreludeClassUnique 21
1013 typeable2ClassKey = mkPreludeClassUnique 22
1014 typeable3ClassKey = mkPreludeClassUnique 23
1015 typeable4ClassKey = mkPreludeClassUnique 24
1016 typeable5ClassKey = mkPreludeClassUnique 25
1017 typeable6ClassKey = mkPreludeClassUnique 26
1018 typeable7ClassKey = mkPreludeClassUnique 27
1020 monadFixClassKey :: Unique
1021 monadFixClassKey = mkPreludeClassUnique 28
1023 monadPlusClassKey, randomClassKey, randomGenClassKey :: Unique
1024 monadPlusClassKey = mkPreludeClassUnique 30
1025 randomClassKey = mkPreludeClassUnique 31
1026 randomGenClassKey = mkPreludeClassUnique 32
1028 isStringClassKey :: Unique
1029 isStringClassKey = mkPreludeClassUnique 33
1031 applicativeClassKey, foldableClassKey, traversableClassKey :: Unique
1032 applicativeClassKey = mkPreludeClassUnique 34
1033 foldableClassKey = mkPreludeClassUnique 35
1034 traversableClassKey = mkPreludeClassUnique 36
1037 %************************************************************************
1039 \subsubsection[Uniques-prelude-TyCons]{@Uniques@ for wired-in @TyCons@}
1041 %************************************************************************
1044 addrPrimTyConKey, arrayPrimTyConKey, boolTyConKey, byteArrayPrimTyConKey,
1045 charPrimTyConKey, charTyConKey, doublePrimTyConKey, doubleTyConKey,
1046 floatPrimTyConKey, floatTyConKey, funTyConKey, intPrimTyConKey,
1047 intTyConKey, int8TyConKey, int16TyConKey, int32PrimTyConKey,
1048 int32TyConKey, int64PrimTyConKey, int64TyConKey, integerTyConKey,
1049 listTyConKey, foreignObjPrimTyConKey, weakPrimTyConKey,
1050 mutableArrayPrimTyConKey, mutableByteArrayPrimTyConKey,
1051 orderingTyConKey, mVarPrimTyConKey, ratioTyConKey, rationalTyConKey,
1052 realWorldTyConKey, stablePtrPrimTyConKey, stablePtrTyConKey,
1053 anyTyConKey :: Unique
1054 addrPrimTyConKey = mkPreludeTyConUnique 1
1055 arrayPrimTyConKey = mkPreludeTyConUnique 3
1056 boolTyConKey = mkPreludeTyConUnique 4
1057 byteArrayPrimTyConKey = mkPreludeTyConUnique 5
1058 charPrimTyConKey = mkPreludeTyConUnique 7
1059 charTyConKey = mkPreludeTyConUnique 8
1060 doublePrimTyConKey = mkPreludeTyConUnique 9
1061 doubleTyConKey = mkPreludeTyConUnique 10
1062 floatPrimTyConKey = mkPreludeTyConUnique 11
1063 floatTyConKey = mkPreludeTyConUnique 12
1064 funTyConKey = mkPreludeTyConUnique 13
1065 intPrimTyConKey = mkPreludeTyConUnique 14
1066 intTyConKey = mkPreludeTyConUnique 15
1067 int8TyConKey = mkPreludeTyConUnique 16
1068 int16TyConKey = mkPreludeTyConUnique 17
1069 int32PrimTyConKey = mkPreludeTyConUnique 18
1070 int32TyConKey = mkPreludeTyConUnique 19
1071 int64PrimTyConKey = mkPreludeTyConUnique 20
1072 int64TyConKey = mkPreludeTyConUnique 21
1073 integerTyConKey = mkPreludeTyConUnique 22
1074 listTyConKey = mkPreludeTyConUnique 23
1075 foreignObjPrimTyConKey = mkPreludeTyConUnique 24
1076 weakPrimTyConKey = mkPreludeTyConUnique 27
1077 mutableArrayPrimTyConKey = mkPreludeTyConUnique 28
1078 mutableByteArrayPrimTyConKey = mkPreludeTyConUnique 29
1079 orderingTyConKey = mkPreludeTyConUnique 30
1080 mVarPrimTyConKey = mkPreludeTyConUnique 31
1081 ratioTyConKey = mkPreludeTyConUnique 32
1082 rationalTyConKey = mkPreludeTyConUnique 33
1083 realWorldTyConKey = mkPreludeTyConUnique 34
1084 stablePtrPrimTyConKey = mkPreludeTyConUnique 35
1085 stablePtrTyConKey = mkPreludeTyConUnique 36
1086 anyTyConKey = mkPreludeTyConUnique 37
1088 statePrimTyConKey, stableNamePrimTyConKey, stableNameTyConKey,
1089 mutVarPrimTyConKey, ioTyConKey,
1090 wordPrimTyConKey, wordTyConKey, word8TyConKey, word16TyConKey,
1091 word32PrimTyConKey, word32TyConKey, word64PrimTyConKey, word64TyConKey,
1092 liftedConKey, unliftedConKey, anyBoxConKey, kindConKey, boxityConKey,
1093 typeConKey, threadIdPrimTyConKey, bcoPrimTyConKey, ptrTyConKey,
1094 funPtrTyConKey, tVarPrimTyConKey :: Unique
1095 statePrimTyConKey = mkPreludeTyConUnique 50
1096 stableNamePrimTyConKey = mkPreludeTyConUnique 51
1097 stableNameTyConKey = mkPreludeTyConUnique 52
1098 mutVarPrimTyConKey = mkPreludeTyConUnique 55
1099 ioTyConKey = mkPreludeTyConUnique 56
1100 wordPrimTyConKey = mkPreludeTyConUnique 58
1101 wordTyConKey = mkPreludeTyConUnique 59
1102 word8TyConKey = mkPreludeTyConUnique 60
1103 word16TyConKey = mkPreludeTyConUnique 61
1104 word32PrimTyConKey = mkPreludeTyConUnique 62
1105 word32TyConKey = mkPreludeTyConUnique 63
1106 word64PrimTyConKey = mkPreludeTyConUnique 64
1107 word64TyConKey = mkPreludeTyConUnique 65
1108 liftedConKey = mkPreludeTyConUnique 66
1109 unliftedConKey = mkPreludeTyConUnique 67
1110 anyBoxConKey = mkPreludeTyConUnique 68
1111 kindConKey = mkPreludeTyConUnique 69
1112 boxityConKey = mkPreludeTyConUnique 70
1113 typeConKey = mkPreludeTyConUnique 71
1114 threadIdPrimTyConKey = mkPreludeTyConUnique 72
1115 bcoPrimTyConKey = mkPreludeTyConUnique 73
1116 ptrTyConKey = mkPreludeTyConUnique 74
1117 funPtrTyConKey = mkPreludeTyConUnique 75
1118 tVarPrimTyConKey = mkPreludeTyConUnique 76
1120 -- Generic Type Constructors
1121 crossTyConKey, plusTyConKey, genUnitTyConKey :: Unique
1122 crossTyConKey = mkPreludeTyConUnique 79
1123 plusTyConKey = mkPreludeTyConUnique 80
1124 genUnitTyConKey = mkPreludeTyConUnique 81
1126 -- Parallel array type constructor
1127 parrTyConKey :: Unique
1128 parrTyConKey = mkPreludeTyConUnique 82
1131 objectTyConKey :: Unique
1132 objectTyConKey = mkPreludeTyConUnique 83
1134 eitherTyConKey :: Unique
1135 eitherTyConKey = mkPreludeTyConUnique 84
1137 -- Super Kinds constructors
1138 tySuperKindTyConKey, coSuperKindTyConKey :: Unique
1139 tySuperKindTyConKey = mkPreludeTyConUnique 85
1140 coSuperKindTyConKey = mkPreludeTyConUnique 86
1142 -- Kind constructors
1143 liftedTypeKindTyConKey, openTypeKindTyConKey, unliftedTypeKindTyConKey,
1144 ubxTupleKindTyConKey, argTypeKindTyConKey :: Unique
1145 liftedTypeKindTyConKey = mkPreludeTyConUnique 87
1146 openTypeKindTyConKey = mkPreludeTyConUnique 88
1147 unliftedTypeKindTyConKey = mkPreludeTyConUnique 89
1148 ubxTupleKindTyConKey = mkPreludeTyConUnique 90
1149 argTypeKindTyConKey = mkPreludeTyConUnique 91
1151 -- Coercion constructors
1152 symCoercionTyConKey, transCoercionTyConKey, leftCoercionTyConKey,
1153 rightCoercionTyConKey, instCoercionTyConKey, unsafeCoercionTyConKey,
1154 csel1CoercionTyConKey, csel2CoercionTyConKey, cselRCoercionTyConKey
1156 symCoercionTyConKey = mkPreludeTyConUnique 93
1157 transCoercionTyConKey = mkPreludeTyConUnique 94
1158 leftCoercionTyConKey = mkPreludeTyConUnique 95
1159 rightCoercionTyConKey = mkPreludeTyConUnique 96
1160 instCoercionTyConKey = mkPreludeTyConUnique 97
1161 unsafeCoercionTyConKey = mkPreludeTyConUnique 98
1162 csel1CoercionTyConKey = mkPreludeTyConUnique 99
1163 csel2CoercionTyConKey = mkPreludeTyConUnique 100
1164 cselRCoercionTyConKey = mkPreludeTyConUnique 101
1166 unknownTyConKey, unknown1TyConKey, unknown2TyConKey, unknown3TyConKey,
1167 opaqueTyConKey :: Unique
1168 unknownTyConKey = mkPreludeTyConUnique 129
1169 unknown1TyConKey = mkPreludeTyConUnique 130
1170 unknown2TyConKey = mkPreludeTyConUnique 131
1171 unknown3TyConKey = mkPreludeTyConUnique 132
1172 opaqueTyConKey = mkPreludeTyConUnique 133
1174 stringTyConKey :: Unique
1175 stringTyConKey = mkPreludeTyConUnique 134
1177 -- Heterogeneous Metaprogramming code type constructor
1178 hetMetCodeTypeTyConKey :: Unique
1179 hetMetCodeTypeTyConKey = mkPreludeTyConUnique 135
1181 ---------------- Template Haskell -------------------
1182 -- USES TyConUniques 200-299
1183 -----------------------------------------------------
1185 unitTyConKey :: Unique
1186 unitTyConKey = mkTupleTyConUnique Boxed 0
1189 %************************************************************************
1191 \subsubsection[Uniques-prelude-DataCons]{@Uniques@ for wired-in @DataCons@}
1193 %************************************************************************
1196 charDataConKey, consDataConKey, doubleDataConKey, falseDataConKey,
1197 floatDataConKey, intDataConKey, nilDataConKey, ratioDataConKey,
1198 stableNameDataConKey, trueDataConKey, wordDataConKey,
1199 ioDataConKey, integerDataConKey :: Unique
1200 charDataConKey = mkPreludeDataConUnique 1
1201 consDataConKey = mkPreludeDataConUnique 2
1202 doubleDataConKey = mkPreludeDataConUnique 3
1203 falseDataConKey = mkPreludeDataConUnique 4
1204 floatDataConKey = mkPreludeDataConUnique 5
1205 intDataConKey = mkPreludeDataConUnique 6
1206 nilDataConKey = mkPreludeDataConUnique 11
1207 ratioDataConKey = mkPreludeDataConUnique 12
1208 stableNameDataConKey = mkPreludeDataConUnique 14
1209 trueDataConKey = mkPreludeDataConUnique 15
1210 wordDataConKey = mkPreludeDataConUnique 16
1211 ioDataConKey = mkPreludeDataConUnique 17
1212 integerDataConKey = mkPreludeDataConUnique 18
1214 -- Generic data constructors
1215 crossDataConKey, inlDataConKey, inrDataConKey, genUnitDataConKey :: Unique
1216 crossDataConKey = mkPreludeDataConUnique 20
1217 inlDataConKey = mkPreludeDataConUnique 21
1218 inrDataConKey = mkPreludeDataConUnique 22
1219 genUnitDataConKey = mkPreludeDataConUnique 23
1221 -- Data constructor for parallel arrays
1222 parrDataConKey :: Unique
1223 parrDataConKey = mkPreludeDataConUnique 24
1225 leftDataConKey, rightDataConKey :: Unique
1226 leftDataConKey = mkPreludeDataConUnique 25
1227 rightDataConKey = mkPreludeDataConUnique 26
1229 -- Data constructor for Heterogeneous Metaprogramming code types
1230 hetMetCodeTypeDataConKey :: Unique
1231 hetMetCodeTypeDataConKey = mkPreludeDataConUnique 27
1234 %************************************************************************
1236 \subsubsection[Uniques-prelude-Ids]{@Uniques@ for wired-in @Ids@ (except @DataCons@)}
1238 %************************************************************************
1241 absentErrorIdKey, augmentIdKey, appendIdKey, buildIdKey, errorIdKey,
1242 foldlIdKey, foldrIdKey, recSelErrorIdKey,
1243 integerMinusOneIdKey, integerPlusOneIdKey,
1244 integerPlusTwoIdKey, integerZeroIdKey,
1245 int2IntegerIdKey, seqIdKey, irrefutPatErrorIdKey, eqStringIdKey,
1246 noMethodBindingErrorIdKey, nonExhaustiveGuardsErrorIdKey,
1247 runtimeErrorIdKey, parErrorIdKey, parIdKey, patErrorIdKey,
1248 realWorldPrimIdKey, recConErrorIdKey, recUpdErrorIdKey,
1249 traceIdKey, wildCardKey,
1250 unpackCStringUtf8IdKey, unpackCStringAppendIdKey,
1251 unpackCStringFoldrIdKey, unpackCStringIdKey :: Unique
1252 wildCardKey = mkPreludeMiscIdUnique 0 -- See Note [WildCard]
1253 absentErrorIdKey = mkPreludeMiscIdUnique 1
1254 augmentIdKey = mkPreludeMiscIdUnique 3
1255 appendIdKey = mkPreludeMiscIdUnique 4
1256 buildIdKey = mkPreludeMiscIdUnique 5
1257 errorIdKey = mkPreludeMiscIdUnique 6
1258 foldlIdKey = mkPreludeMiscIdUnique 7
1259 foldrIdKey = mkPreludeMiscIdUnique 8
1260 recSelErrorIdKey = mkPreludeMiscIdUnique 9
1261 integerMinusOneIdKey = mkPreludeMiscIdUnique 10
1262 integerPlusOneIdKey = mkPreludeMiscIdUnique 11
1263 integerPlusTwoIdKey = mkPreludeMiscIdUnique 12
1264 integerZeroIdKey = mkPreludeMiscIdUnique 13
1265 int2IntegerIdKey = mkPreludeMiscIdUnique 14
1266 seqIdKey = mkPreludeMiscIdUnique 15
1267 irrefutPatErrorIdKey = mkPreludeMiscIdUnique 16
1268 eqStringIdKey = mkPreludeMiscIdUnique 17
1269 noMethodBindingErrorIdKey = mkPreludeMiscIdUnique 18
1270 nonExhaustiveGuardsErrorIdKey = mkPreludeMiscIdUnique 19
1271 runtimeErrorIdKey = mkPreludeMiscIdUnique 20
1272 parErrorIdKey = mkPreludeMiscIdUnique 21
1273 parIdKey = mkPreludeMiscIdUnique 22
1274 patErrorIdKey = mkPreludeMiscIdUnique 23
1275 realWorldPrimIdKey = mkPreludeMiscIdUnique 24
1276 recConErrorIdKey = mkPreludeMiscIdUnique 25
1277 recUpdErrorIdKey = mkPreludeMiscIdUnique 26
1278 traceIdKey = mkPreludeMiscIdUnique 27
1279 unpackCStringUtf8IdKey = mkPreludeMiscIdUnique 28
1280 unpackCStringAppendIdKey = mkPreludeMiscIdUnique 29
1281 unpackCStringFoldrIdKey = mkPreludeMiscIdUnique 30
1282 unpackCStringIdKey = mkPreludeMiscIdUnique 31
1284 unsafeCoerceIdKey, concatIdKey, filterIdKey, zipIdKey, bindIOIdKey,
1285 returnIOIdKey, deRefStablePtrIdKey, newStablePtrIdKey,
1286 smallIntegerIdKey, plusIntegerIdKey, timesIntegerIdKey,
1287 printIdKey, failIOIdKey, nullAddrIdKey, voidArgIdKey,
1288 fstIdKey, sndIdKey, otherwiseIdKey, assertIdKey, runSTRepIdKey :: Unique
1289 unsafeCoerceIdKey = mkPreludeMiscIdUnique 32
1290 concatIdKey = mkPreludeMiscIdUnique 33
1291 filterIdKey = mkPreludeMiscIdUnique 34
1292 zipIdKey = mkPreludeMiscIdUnique 35
1293 bindIOIdKey = mkPreludeMiscIdUnique 36
1294 returnIOIdKey = mkPreludeMiscIdUnique 37
1295 deRefStablePtrIdKey = mkPreludeMiscIdUnique 38
1296 newStablePtrIdKey = mkPreludeMiscIdUnique 39
1297 smallIntegerIdKey = mkPreludeMiscIdUnique 40
1298 plusIntegerIdKey = mkPreludeMiscIdUnique 41
1299 timesIntegerIdKey = mkPreludeMiscIdUnique 42
1300 printIdKey = mkPreludeMiscIdUnique 43
1301 failIOIdKey = mkPreludeMiscIdUnique 44
1302 nullAddrIdKey = mkPreludeMiscIdUnique 46
1303 voidArgIdKey = mkPreludeMiscIdUnique 47
1304 fstIdKey = mkPreludeMiscIdUnique 49
1305 sndIdKey = mkPreludeMiscIdUnique 50
1306 otherwiseIdKey = mkPreludeMiscIdUnique 51
1307 assertIdKey = mkPreludeMiscIdUnique 53
1308 runSTRepIdKey = mkPreludeMiscIdUnique 54
1310 rootMainKey, runMainKey :: Unique
1311 rootMainKey = mkPreludeMiscIdUnique 55
1312 runMainKey = mkPreludeMiscIdUnique 56
1314 thenIOIdKey, lazyIdKey, assertErrorIdKey :: Unique
1315 thenIOIdKey = mkPreludeMiscIdUnique 59
1316 lazyIdKey = mkPreludeMiscIdUnique 60
1317 assertErrorIdKey = mkPreludeMiscIdUnique 61
1319 breakpointIdKey, breakpointCondIdKey, breakpointAutoIdKey,
1320 breakpointJumpIdKey, breakpointCondJumpIdKey,
1321 breakpointAutoJumpIdKey :: Unique
1322 breakpointIdKey = mkPreludeMiscIdUnique 62
1323 breakpointCondIdKey = mkPreludeMiscIdUnique 63
1324 breakpointAutoIdKey = mkPreludeMiscIdUnique 64
1325 breakpointJumpIdKey = mkPreludeMiscIdUnique 65
1326 breakpointCondJumpIdKey = mkPreludeMiscIdUnique 66
1327 breakpointAutoJumpIdKey = mkPreludeMiscIdUnique 67
1329 inlineIdKey :: Unique
1330 inlineIdKey = mkPreludeMiscIdUnique 68
1332 mapIdKey, groupWithIdKey, dollarIdKey :: Unique
1333 mapIdKey = mkPreludeMiscIdUnique 69
1334 groupWithIdKey = mkPreludeMiscIdUnique 70
1335 dollarIdKey = mkPreludeMiscIdUnique 71
1337 -- Parallel array functions
1338 singletonPIdKey, nullPIdKey, lengthPIdKey, replicatePIdKey, mapPIdKey,
1339 filterPIdKey, zipPIdKey, crossMapPIdKey, indexPIdKey, toPIdKey,
1340 enumFromToPIdKey, enumFromThenToPIdKey, emptyPIdKey, appPIdKey :: Unique
1341 singletonPIdKey = mkPreludeMiscIdUnique 79
1342 nullPIdKey = mkPreludeMiscIdUnique 80
1343 lengthPIdKey = mkPreludeMiscIdUnique 81
1344 replicatePIdKey = mkPreludeMiscIdUnique 82
1345 mapPIdKey = mkPreludeMiscIdUnique 83
1346 filterPIdKey = mkPreludeMiscIdUnique 84
1347 zipPIdKey = mkPreludeMiscIdUnique 85
1348 crossMapPIdKey = mkPreludeMiscIdUnique 86
1349 indexPIdKey = mkPreludeMiscIdUnique 87
1350 toPIdKey = mkPreludeMiscIdUnique 88
1351 enumFromToPIdKey = mkPreludeMiscIdUnique 89
1352 enumFromThenToPIdKey = mkPreludeMiscIdUnique 90
1353 emptyPIdKey = mkPreludeMiscIdUnique 91
1354 appPIdKey = mkPreludeMiscIdUnique 92
1357 unmarshalObjectIdKey, marshalObjectIdKey, marshalStringIdKey,
1358 unmarshalStringIdKey, checkDotnetResNameIdKey :: Unique
1359 unmarshalObjectIdKey = mkPreludeMiscIdUnique 94
1360 marshalObjectIdKey = mkPreludeMiscIdUnique 95
1361 marshalStringIdKey = mkPreludeMiscIdUnique 96
1362 unmarshalStringIdKey = mkPreludeMiscIdUnique 97
1363 checkDotnetResNameIdKey = mkPreludeMiscIdUnique 98
1367 Certain class operations from Prelude classes. They get their own
1368 uniques so we can look them up easily when we want to conjure them up
1369 during type checking.
1372 -- Just a place holder for unbound variables produced by the renamer:
1373 unboundKey :: Unique
1374 unboundKey = mkPreludeMiscIdUnique 101
1376 fromIntegerClassOpKey, minusClassOpKey, fromRationalClassOpKey,
1377 enumFromClassOpKey, enumFromThenClassOpKey, enumFromToClassOpKey,
1378 enumFromThenToClassOpKey, eqClassOpKey, geClassOpKey, negateClassOpKey,
1379 failMClassOpKey, bindMClassOpKey, thenMClassOpKey, returnMClassOpKey
1381 fromIntegerClassOpKey = mkPreludeMiscIdUnique 102
1382 minusClassOpKey = mkPreludeMiscIdUnique 103
1383 fromRationalClassOpKey = mkPreludeMiscIdUnique 104
1384 enumFromClassOpKey = mkPreludeMiscIdUnique 105
1385 enumFromThenClassOpKey = mkPreludeMiscIdUnique 106
1386 enumFromToClassOpKey = mkPreludeMiscIdUnique 107
1387 enumFromThenToClassOpKey = mkPreludeMiscIdUnique 108
1388 eqClassOpKey = mkPreludeMiscIdUnique 109
1389 geClassOpKey = mkPreludeMiscIdUnique 110
1390 negateClassOpKey = mkPreludeMiscIdUnique 111
1391 failMClassOpKey = mkPreludeMiscIdUnique 112
1392 bindMClassOpKey = mkPreludeMiscIdUnique 113 -- (>>=)
1393 thenMClassOpKey = mkPreludeMiscIdUnique 114 -- (>>)
1394 returnMClassOpKey = mkPreludeMiscIdUnique 117
1396 -- Recursive do notation
1398 mfixIdKey = mkPreludeMiscIdUnique 118
1401 arrAIdKey, composeAIdKey, firstAIdKey, appAIdKey, choiceAIdKey,
1402 loopAIdKey :: Unique
1403 arrAIdKey = mkPreludeMiscIdUnique 119
1404 composeAIdKey = mkPreludeMiscIdUnique 120 -- >>>
1405 firstAIdKey = mkPreludeMiscIdUnique 121
1406 appAIdKey = mkPreludeMiscIdUnique 122
1407 choiceAIdKey = mkPreludeMiscIdUnique 123 -- |||
1408 loopAIdKey = mkPreludeMiscIdUnique 124
1410 fromStringClassOpKey :: Unique
1411 fromStringClassOpKey = mkPreludeMiscIdUnique 125
1413 -- Annotation type checking
1414 toAnnotationWrapperIdKey :: Unique
1415 toAnnotationWrapperIdKey = mkPreludeMiscIdUnique 126
1417 -- Conversion functions
1418 fromIntegralIdKey, realToFracIdKey, toIntegerClassOpKey, toRationalClassOpKey :: Unique
1419 fromIntegralIdKey = mkPreludeMiscIdUnique 127
1420 realToFracIdKey = mkPreludeMiscIdUnique 128
1421 toIntegerClassOpKey = mkPreludeMiscIdUnique 129
1422 toRationalClassOpKey = mkPreludeMiscIdUnique 130
1425 hetmet_brak_key, hetmet_esc_key, hetmet_csp_key, hetmet_flatten_key, hetmet_unflatten_key, hetmet_flattened_id_key :: Unique
1426 hetmet_brak_key = mkPreludeMiscIdUnique 131
1427 hetmet_esc_key = mkPreludeMiscIdUnique 132
1428 hetmet_csp_key = mkPreludeMiscIdUnique 133
1429 hetmet_guest_integer_literal_key, hetmet_guest_string_literal_key, hetmet_guest_char_literal_key :: Unique
1430 hetmet_guest_integer_literal_key = mkPreludeMiscIdUnique 134
1431 hetmet_guest_string_literal_key = mkPreludeMiscIdUnique 135
1432 hetmet_guest_char_literal_key = mkPreludeMiscIdUnique 136
1433 hetmet_PGArrow_key :: Unique
1434 hetmet_PGArrow_key = mkPreludeMiscIdUnique 137
1435 hetmet_pga_id_key :: Unique
1436 hetmet_pga_id_key = mkPreludeMiscIdUnique 138
1437 hetmet_pga_comp_key :: Unique
1438 hetmet_pga_comp_key = mkPreludeMiscIdUnique 139
1439 hetmet_pga_first_key :: Unique
1440 hetmet_pga_first_key = mkPreludeMiscIdUnique 140
1441 hetmet_pga_second_key :: Unique
1442 hetmet_pga_second_key = mkPreludeMiscIdUnique 141
1443 hetmet_pga_cancell_key :: Unique
1444 hetmet_pga_cancell_key = mkPreludeMiscIdUnique 142
1445 hetmet_pga_cancelr_key :: Unique
1446 hetmet_pga_cancelr_key = mkPreludeMiscIdUnique 143
1447 hetmet_pga_uncancell_key :: Unique
1448 hetmet_pga_uncancell_key = mkPreludeMiscIdUnique 144
1449 hetmet_pga_uncancelr_key :: Unique
1450 hetmet_pga_uncancelr_key = mkPreludeMiscIdUnique 145
1451 hetmet_pga_assoc_key :: Unique
1452 hetmet_pga_assoc_key = mkPreludeMiscIdUnique 146
1453 hetmet_pga_unassoc_key :: Unique
1454 hetmet_pga_unassoc_key = mkPreludeMiscIdUnique 147
1455 hetmet_pga_copy_key :: Unique
1456 hetmet_pga_copy_key = mkPreludeMiscIdUnique 148
1457 hetmet_pga_drop_key :: Unique
1458 hetmet_pga_drop_key = mkPreludeMiscIdUnique 149
1459 hetmet_pga_swap_key :: Unique
1460 hetmet_pga_swap_key = mkPreludeMiscIdUnique 150
1461 hetmet_pga_applyl_key :: Unique
1462 hetmet_pga_applyl_key = mkPreludeMiscIdUnique 151
1463 hetmet_pga_applyr_key :: Unique
1464 hetmet_pga_applyr_key = mkPreludeMiscIdUnique 152
1465 hetmet_pga_curryl_key :: Unique
1466 hetmet_pga_curryl_key = mkPreludeMiscIdUnique 153
1467 hetmet_pga_curryr_key :: Unique
1468 hetmet_pga_curryr_key = mkPreludeMiscIdUnique 154
1469 hetmet_flatten_key = mkPreludeMiscIdUnique 155
1470 hetmet_unflatten_key = mkPreludeMiscIdUnique 156
1471 hetmet_flattened_id_key = mkPreludeMiscIdUnique 157
1472 hetmet_PGArrow_unit_key :: Unique
1473 hetmet_PGArrow_unit_key = mkPreludeMiscIdUnique 158
1474 hetmet_PGArrow_tensor_key :: Unique
1475 hetmet_PGArrow_tensor_key = mkPreludeMiscIdUnique 159
1476 hetmet_PGArrow_exponent_key :: Unique
1477 hetmet_PGArrow_exponent_key = mkPreludeMiscIdUnique 160
1481 ---------------- Template Haskell -------------------
1482 -- USES IdUniques 200-499
1483 -----------------------------------------------------
1487 %************************************************************************
1489 \subsection{Standard groups of types}
1491 %************************************************************************
1494 numericTyKeys :: [Unique]
1503 kindKeys :: [Unique]
1504 kindKeys = [ liftedTypeKindTyConKey
1505 , openTypeKindTyConKey
1506 , unliftedTypeKindTyConKey
1507 , ubxTupleKindTyConKey
1508 , argTypeKindTyConKey ]
1512 %************************************************************************
1514 \subsection[Class-std-groups]{Standard groups of Prelude classes}
1516 %************************************************************************
1518 NOTE: @Eq@ and @Text@ do need to appear in @standardClasses@
1519 even though every numeric class has these two as a superclass,
1520 because the list of ambiguous dictionaries hasn't been simplified.
1523 numericClassKeys :: [Unique]
1529 ++ fractionalClassKeys
1531 fractionalClassKeys :: [Unique]
1532 fractionalClassKeys =
1533 [ fractionalClassKey
1539 -- the strictness analyser needs to know about numeric types
1540 -- (see SaAbsInt.lhs)
1541 needsDataDeclCtxtClassKeys :: [Unique]
1542 needsDataDeclCtxtClassKeys = -- see comments in TcDeriv
1546 -- The "standard classes" are used in defaulting (Haskell 98 report 4.3.4),
1547 -- and are: "classes defined in the Prelude or a standard library"
1548 standardClassKeys :: [Unique]
1549 standardClassKeys = derivableClassKeys ++ numericClassKeys
1550 ++ [randomClassKey, randomGenClassKey,
1552 monadClassKey, monadPlusClassKey,
1554 applicativeClassKey, foldableClassKey, traversableClassKey
1558 @derivableClassKeys@ is also used in checking \tr{deriving} constructs
1562 derivableClassKeys :: [Unique]
1564 = [ eqClassKey, ordClassKey, enumClassKey, ixClassKey,
1565 boundedClassKey, showClassKey, readClassKey ]