X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Fprelude%2FPrelNames.lhs;h=8a823302a1bb95e93834d5db45c1053556740ae6;hb=10fcd78ccde892feccda3f5eacd221c1de75feea;hp=d774e74fcb5cfeddfab14c3f496ee2b386ef3e3c;hpb=1dfaee318171836b32f6b33a14231c69adfdef2f;p=ghc-hetmet.git diff --git a/ghc/compiler/prelude/PrelNames.lhs b/ghc/compiler/prelude/PrelNames.lhs index d774e74..8a82330 100644 --- a/ghc/compiler/prelude/PrelNames.lhs +++ b/ghc/compiler/prelude/PrelNames.lhs @@ -44,7 +44,8 @@ import RdrName ( RdrName, mkOrig, mkUnqual ) import UniqFM import Unique ( Unique, Uniquable(..), hasKey, mkPreludeMiscIdUnique, mkPreludeDataConUnique, - mkPreludeTyConUnique, mkPreludeClassUnique + mkPreludeTyConUnique, mkPreludeClassUnique, + mkTupleTyConUnique ) import BasicTypes ( Boxity(..), Arity ) import UniqFM ( UniqFM, listToUFM ) @@ -94,8 +95,8 @@ knownKeyNames :: [Name] knownKeyNames = [ -- Type constructors (synonyms especially) - ioTyConName, - mainName, + ioTyConName, ioDataConName, + runMainName, orderingTyConName, rationalTyConName, ratioDataConName, @@ -147,7 +148,11 @@ knownKeyNames returnMName, failMName, fromRationalName, - + + -- not class methods, but overloaded (for parallel arrays) + enumFromToPName, + enumFromThenToPName, + deRefStablePtrName, newStablePtrName, bindIOName, @@ -170,6 +175,20 @@ knownKeyNames buildName, augmentName, + -- Parallel array operations + nullPName, + lengthPName, + replicatePName, + mapPName, + filterPName, + zipPName, + crossPName, + indexPName, + toPName, + bpermutePName, + bpermuteDftPName, + indexOfPName, + -- FFI primitive types that are not wired-in. int8TyConName, int16TyConName, @@ -188,7 +207,20 @@ knownKeyNames eqStringName, assertName, runSTRepName, - printName + printName, + splitName, fstName, sndName, -- Used by splittery + + -- Others (needed for flattening and not mentioned before) + andName, + orName, + eqCharName, + eqIntName, + eqFloatName, + eqDoubleName, + neqCharName, + neqIntName, + neqFloatName, + neqDoubleName ] \end{code} @@ -208,6 +240,7 @@ pREL_SHOW_Name = mkModuleName "PrelShow" pREL_READ_Name = mkModuleName "PrelRead" pREL_NUM_Name = mkModuleName "PrelNum" pREL_LIST_Name = mkModuleName "PrelList" +pREL_PARR_Name = mkModuleName "PrelPArr" pREL_TUP_Name = mkModuleName "PrelTup" pREL_PACK_Name = mkModuleName "PrelPack" pREL_CONC_Name = mkModuleName "PrelConc" @@ -218,13 +251,14 @@ pREL_ARR_Name = mkModuleName "PrelArr" pREL_BYTEARR_Name = mkModuleName "PrelByteArr" pREL_FOREIGN_Name = mkModuleName "PrelForeign" pREL_STABLE_Name = mkModuleName "PrelStable" +pREL_SPLIT_Name = mkModuleName "PrelSplit" pREL_ADDR_Name = mkModuleName "PrelAddr" pREL_PTR_Name = mkModuleName "PrelPtr" pREL_ERR_Name = mkModuleName "PrelErr" pREL_REAL_Name = mkModuleName "PrelReal" pREL_FLOAT_Name = mkModuleName "PrelFloat" +pREL_TOP_HANDLER_Name = mkModuleName "PrelTopHandler" -pREL_MAIN_Name = mkModuleName "PrelMain" mAIN_Name = mkModuleName "Main" pREL_INT_Name = mkModuleName "PrelInt" pREL_WORD_Name = mkModuleName "PrelWord" @@ -232,6 +266,8 @@ pREL_WORD_Name = mkModuleName "PrelWord" fOREIGNOBJ_Name = mkModuleName "ForeignObj" aDDR_Name = mkModuleName "Addr" +gLA_EXTS_Name = mkModuleName "GlaExts" + pREL_GHC = mkPrelModule pREL_GHC_Name pREL_BASE = mkPrelModule pREL_BASE_Name pREL_ADDR = mkPrelModule pREL_ADDR_Name @@ -243,6 +279,7 @@ pREL_ERR = mkPrelModule pREL_ERR_Name pREL_NUM = mkPrelModule pREL_NUM_Name pREL_REAL = mkPrelModule pREL_REAL_Name pREL_FLOAT = mkPrelModule pREL_FLOAT_Name +pRELUDE = mkPrelModule pRELUDE_Name iNTERACTIVE = mkHomeModule (mkModuleName "$Interactive") \end{code} @@ -302,7 +339,8 @@ compiler (notably the deriving mechanism) need to mention their names, and it's convenient to write them all down in one place. \begin{code} -mainName = varQual mAIN_Name SLIT("main") mainKey +dollarMainName = varQual mAIN_Name SLIT("$main") dollarMainKey +runMainName = varQual pREL_TOP_HANDLER_Name SLIT("runMain") runMainKey -- Stuff from PrelGHC usOnceTyConName = kindQual SLIT(".") usOnceTyConKey @@ -356,6 +394,10 @@ listTyConName = tcQual pREL_BASE_Name SLIT("[]") listTyConKey nilDataConName = dataQual pREL_BASE_Name SLIT("[]") nilDataConKey consDataConName = dataQual pREL_BASE_Name SLIT(":") consDataConKey +-- PrelTup +fstName = varQual pREL_TUP_Name SLIT("fst") fstIdKey +sndName = varQual pREL_TUP_Name SLIT("snd") sndIdKey + -- Generics crossTyConName = tcQual pREL_BASE_Name SLIT(":*:") crossTyConKey crossDataConName = dataQual pREL_BASE_Name SLIT(":*:") crossDataConKey @@ -366,14 +408,25 @@ genUnitTyConName = tcQual pREL_BASE_Name SLIT("Unit") genUnitTyConKey genUnitDataConName = dataQual pREL_BASE_Name SLIT("Unit") genUnitDataConKey -- Random PrelBase functions -unsafeCoerceName = varQual pREL_BASE_Name SLIT("unsafeCoerce") unsafeCoerceIdKey +unsafeCoerceName = varQual pREL_BASE_Name SLIT("unsafeCoerce") + unsafeCoerceIdKey otherwiseIdName = varQual pREL_BASE_Name SLIT("otherwise") otherwiseIdKey -appendName = varQual pREL_BASE_Name SLIT("++") appendIdKey -foldrName = varQual pREL_BASE_Name SLIT("foldr") foldrIdKey -mapName = varQual pREL_BASE_Name SLIT("map") mapIdKey -buildName = varQual pREL_BASE_Name SLIT("build") buildIdKey -augmentName = varQual pREL_BASE_Name SLIT("augment") augmentIdKey -eqStringName = varQual pREL_BASE_Name SLIT("eqString") eqStringIdKey +appendName = varQual pREL_BASE_Name SLIT("++") appendIdKey +foldrName = varQual pREL_BASE_Name SLIT("foldr") foldrIdKey +mapName = varQual pREL_BASE_Name SLIT("map") mapIdKey +buildName = varQual pREL_BASE_Name SLIT("build") buildIdKey +augmentName = varQual pREL_BASE_Name SLIT("augment") augmentIdKey +eqStringName = varQual pREL_BASE_Name SLIT("eqString") eqStringIdKey +andName = varQual pREL_BASE_Name SLIT("&&") andIdKey +orName = varQual pREL_BASE_Name SLIT("||") orIdKey +eqCharName = varQual pREL_GHC_Name SLIT("eqChar#") eqCharIdKey +eqIntName = varQual pREL_GHC_Name SLIT("==#") eqIntIdKey +eqFloatName = varQual pREL_GHC_Name SLIT("eqFloat#") eqFloatIdKey +eqDoubleName = varQual pREL_GHC_Name SLIT("==##") eqDoubleIdKey +neqCharName = varQual pREL_GHC_Name SLIT("neqChar#") neqCharIdKey +neqIntName = varQual pREL_GHC_Name SLIT("/=#") neqIntIdKey +neqFloatName = varQual pREL_GHC_Name SLIT("neqFloat#") neqFloatIdKey +neqDoubleName = varQual pREL_GHC_Name SLIT("/=##") neqDoubleIdKey -- Strings unpackCStringName = varQual pREL_BASE_Name SLIT("unpackCString#") unpackCStringIdKey @@ -444,6 +497,10 @@ enumFromToName = varQual pREL_ENUM_Name SLIT("enumFromTo") enumFromToClassOpK enumFromThenName = varQual pREL_ENUM_Name SLIT("enumFromThen") enumFromThenClassOpKey enumFromThenToName = varQual pREL_ENUM_Name SLIT("enumFromThenTo") enumFromThenToClassOpKey +-- Overloaded via Class Enum +enumFromToPName = varQual pREL_PARR_Name SLIT("enumFromToP") enumFromToPIdKey +enumFromThenToPName= varQual pREL_PARR_Name SLIT("enumFromThenToP") enumFromThenToPIdKey + -- Class Bounded boundedClassName = clsQual pREL_ENUM_Name SLIT("Bounded") boundedClassKey @@ -452,6 +509,23 @@ concatName = varQual pREL_LIST_Name SLIT("concat") concatIdKey filterName = varQual pREL_LIST_Name SLIT("filter") filterIdKey zipName = varQual pREL_LIST_Name SLIT("zip") zipIdKey +-- parallel array types and functions +parrTyConName = tcQual pREL_PARR_Name SLIT("[::]") parrTyConKey +parrDataConName = dataQual pREL_PARR_Name SLIT("PArr") parrDataConKey +nullPName = varQual pREL_PARR_Name SLIT("nullP") nullPIdKey +lengthPName = varQual pREL_PARR_Name SLIT("lengthP") lengthPIdKey +replicatePName = varQual pREL_PARR_Name SLIT("replicateP") replicatePIdKey +mapPName = varQual pREL_PARR_Name SLIT("mapP") mapPIdKey +filterPName = varQual pREL_PARR_Name SLIT("filterP") filterPIdKey +zipPName = varQual pREL_PARR_Name SLIT("zipP") zipPIdKey +crossPName = varQual pREL_PARR_Name SLIT("crossP") crossPIdKey +indexPName = varQual pREL_PARR_Name SLIT("!:") indexPIdKey +toPName = varQual pREL_PARR_Name SLIT("toP") toPIdKey +bpermutePName = varQual pREL_PARR_Name SLIT("bpermuteP") bpermutePIdKey +bpermuteDftPName = varQual pREL_PARR_Name SLIT("bpermuteDftP") + bpermuteDftPIdKey +indexOfPName = varQual pREL_PARR_Name SLIT("indexOfP") indexOfPIdKey + -- IOBase things ioTyConName = tcQual pREL_IO_BASE_Name SLIT("IO") ioTyConKey ioDataConName = dataQual pREL_IO_BASE_Name SLIT("IO") ioDataConKey @@ -489,7 +563,7 @@ funPtrDataConName = dataQual pREL_PTR_Name SLIT("FunPtr") funPtrDataConKey byteArrayTyConName = tcQual pREL_BYTEARR_Name SLIT("ByteArray") byteArrayTyConKey mutableByteArrayTyConName = tcQual pREL_BYTEARR_Name SLIT("MutableByteArray") mutableByteArrayTyConKey --- Forign objects and weak pointers +-- Foreign objects and weak pointers foreignObjTyConName = tcQual fOREIGNOBJ_Name SLIT("ForeignObj") foreignObjTyConKey foreignObjDataConName = dataQual fOREIGNOBJ_Name SLIT("ForeignObj") foreignObjDataConKey foreignPtrTyConName = tcQual pREL_FOREIGN_Name SLIT("ForeignPtr") foreignPtrTyConKey @@ -503,6 +577,9 @@ errorName = varQual pREL_ERR_Name SLIT("error") errorIdKey assertName = varQual pREL_GHC_Name SLIT("assert") assertIdKey getTagName = varQual pREL_GHC_Name SLIT("getTag#") getTagIdKey runSTRepName = varQual pREL_ST_Name SLIT("runSTRep") runSTRepIdKey + +-- The "split" Id for splittable implicit parameters +splitName = varQual pREL_SPLIT_Name SLIT("split") splitIdKey \end{code} %************************************************************************ @@ -574,6 +651,7 @@ populate the occurrence list above. funTyCon_RDR = nameRdrName funTyConName nilCon_RDR = nameRdrName nilDataConName listTyCon_RDR = nameRdrName listTyConName +parrTyCon_RDR = nameRdrName parrTyConName ioTyCon_RDR = nameRdrName ioTyConName intTyCon_RDR = nameRdrName intTyConName eq_RDR = nameRdrName eqName @@ -752,6 +830,11 @@ usManyTyConKey = mkPreludeTyConUnique 78 crossTyConKey = mkPreludeTyConUnique 79 plusTyConKey = mkPreludeTyConUnique 80 genUnitTyConKey = mkPreludeTyConUnique 81 + +-- Parallel array type constructor +parrTyConKey = mkPreludeTyConUnique 82 + +unitTyConKey = mkTupleTyConUnique Boxed 0 \end{code} %************************************************************************ @@ -787,6 +870,9 @@ crossDataConKey = mkPreludeDataConUnique 20 inlDataConKey = mkPreludeDataConUnique 21 inrDataConKey = mkPreludeDataConUnique 22 genUnitDataConKey = mkPreludeDataConUnique 23 + +-- Data constructor for parallel arrays +parrDataConKey = mkPreludeDataConUnique 24 \end{code} %************************************************************************ @@ -809,6 +895,7 @@ integerPlusOneIdKey = mkPreludeMiscIdUnique 10 integerPlusTwoIdKey = mkPreludeMiscIdUnique 11 integerZeroIdKey = mkPreludeMiscIdUnique 12 int2IntegerIdKey = mkPreludeMiscIdUnique 13 +seqIdKey = mkPreludeMiscIdUnique 14 irrefutPatErrorIdKey = mkPreludeMiscIdUnique 15 eqStringIdKey = mkPreludeMiscIdUnique 16 noMethodBindingErrorIdKey = mkPreludeMiscIdUnique 17 @@ -839,6 +926,47 @@ plusIntegerIdKey = mkPreludeMiscIdUnique 41 timesIntegerIdKey = mkPreludeMiscIdUnique 42 printIdKey = mkPreludeMiscIdUnique 43 failIOIdKey = mkPreludeMiscIdUnique 44 +nullAddrIdKey = mkPreludeMiscIdUnique 46 +voidArgIdKey = mkPreludeMiscIdUnique 47 +splitIdKey = mkPreludeMiscIdUnique 48 +fstIdKey = mkPreludeMiscIdUnique 49 +sndIdKey = mkPreludeMiscIdUnique 50 +otherwiseIdKey = mkPreludeMiscIdUnique 51 +mapIdKey = mkPreludeMiscIdUnique 52 +assertIdKey = mkPreludeMiscIdUnique 53 +runSTRepIdKey = mkPreludeMiscIdUnique 54 + +dollarMainKey = mkPreludeMiscIdUnique 55 +runMainKey = mkPreludeMiscIdUnique 56 + +andIdKey = mkPreludeMiscIdUnique 57 +orIdKey = mkPreludeMiscIdUnique 58 +eqCharIdKey = mkPreludeMiscIdUnique 59 +eqIntIdKey = mkPreludeMiscIdUnique 60 +eqFloatIdKey = mkPreludeMiscIdUnique 61 +eqDoubleIdKey = mkPreludeMiscIdUnique 62 +neqCharIdKey = mkPreludeMiscIdUnique 63 +neqIntIdKey = mkPreludeMiscIdUnique 64 +neqFloatIdKey = mkPreludeMiscIdUnique 65 +neqDoubleIdKey = mkPreludeMiscIdUnique 66 + +-- NB: Currently a gap of four slots + +-- Parallel array functions +nullPIdKey = mkPreludeMiscIdUnique 70 +lengthPIdKey = mkPreludeMiscIdUnique 71 +replicatePIdKey = mkPreludeMiscIdUnique 72 +mapPIdKey = mkPreludeMiscIdUnique 73 +filterPIdKey = mkPreludeMiscIdUnique 74 +zipPIdKey = mkPreludeMiscIdUnique 75 +crossPIdKey = mkPreludeMiscIdUnique 76 +indexPIdKey = mkPreludeMiscIdUnique 77 +toPIdKey = mkPreludeMiscIdUnique 78 +enumFromToPIdKey = mkPreludeMiscIdUnique 79 +enumFromThenToPIdKey = mkPreludeMiscIdUnique 80 +bpermutePIdKey = mkPreludeMiscIdUnique 81 +bpermuteDftPIdKey = mkPreludeMiscIdUnique 82 +indexOfPIdKey = mkPreludeMiscIdUnique 83 \end{code} Certain class operations from Prelude classes. They get their own @@ -846,6 +974,8 @@ uniques so we can look them up easily when we want to conjure them up during type checking. \begin{code} + -- Just a place holder for unbound variables produced by the renamer: +unboundKey = mkPreludeMiscIdUnique 101 fromIntegerClassOpKey = mkPreludeMiscIdUnique 102 minusClassOpKey = mkPreludeMiscIdUnique 103 fromRationalClassOpKey = mkPreludeMiscIdUnique 104 @@ -858,20 +988,9 @@ geClassOpKey = mkPreludeMiscIdUnique 110 negateClassOpKey = mkPreludeMiscIdUnique 111 failMClassOpKey = mkPreludeMiscIdUnique 112 thenMClassOpKey = mkPreludeMiscIdUnique 113 -- (>>=) - -- Just a place holder for unbound variables produced by the renamer: -unboundKey = mkPreludeMiscIdUnique 114 fromEnumClassOpKey = mkPreludeMiscIdUnique 115 - -mainKey = mkPreludeMiscIdUnique 116 returnMClassOpKey = mkPreludeMiscIdUnique 117 -otherwiseIdKey = mkPreludeMiscIdUnique 118 toEnumClassOpKey = mkPreludeMiscIdUnique 119 -mapIdKey = mkPreludeMiscIdUnique 120 -\end{code} - -\begin{code} -assertIdKey = mkPreludeMiscIdUnique 121 -runSTRepIdKey = mkPreludeMiscIdUnique 122 \end{code}