X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Fprelude%2FPrelNames.lhs;h=c2da0aa38c15bea3849293cbc29a7708e9f53f8e;hb=51666a19707f4ca34eec28a14bffbbc7d642e647;hp=c30e8ca6f4f3671c2577f9e39acdeb2b7c57914f;hpb=1c62b517711ac232a8024d91fd4b317a6804d28e;p=ghc-hetmet.git diff --git a/ghc/compiler/prelude/PrelNames.lhs b/ghc/compiler/prelude/PrelNames.lhs index c30e8ca..c2da0aa 100644 --- a/ghc/compiler/prelude/PrelNames.lhs +++ b/ghc/compiler/prelude/PrelNames.lhs @@ -22,8 +22,6 @@ module PrelNames ( knownKeyNames, mkTupNameStr, mkTupConRdrName, - SyntaxMap, vanillaSyntaxMap, SyntaxList, syntaxList, - ------------------------------------------------------------ -- Goups of classes and types needsDataDeclCtxtClassKeys, cCallishClassKeys, noDictClassKeys, @@ -38,7 +36,7 @@ module PrelNames ( #include "HsVersions.h" -import Module ( ModuleName, mkPrelModule, mkModuleName ) +import Module ( ModuleName, mkPrelModule, mkHomeModule, mkModuleName ) import OccName ( NameSpace, UserFS, varName, dataName, tcName, clsName, mkKindOccFS, mkOccFS ) @@ -46,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 ) @@ -67,7 +66,7 @@ import Panic ( panic ) This *local* name is used by the interactive stuff \begin{code} -itName = mkLocalName itIdKey (mkOccFS varName SLIT("it")) noSrcLoc +itName uniq = mkLocalName uniq (mkOccFS varName SLIT("it")) noSrcLoc \end{code} \begin{code} @@ -160,6 +159,7 @@ knownKeyNames mapName, appendName, unpackCStringName, + unpackCStringListName, unpackCStringAppendName, unpackCStringFoldrName, unpackCStringUtf8Name, @@ -245,6 +245,8 @@ pREL_ERR = mkPrelModule pREL_ERR_Name pREL_NUM = mkPrelModule pREL_NUM_Name pREL_REAL = mkPrelModule pREL_REAL_Name pREL_FLOAT = mkPrelModule pREL_FLOAT_Name + +iNTERACTIVE = mkHomeModule (mkModuleName "$Interactive") \end{code} %************************************************************************ @@ -318,8 +320,10 @@ typeConName = kindQual SLIT("Type") typeConKey funTyConName = tcQual pREL_GHC_Name SLIT("(->)") funTyConKey charPrimTyConName = tcQual pREL_GHC_Name SLIT("Char#") charPrimTyConKey intPrimTyConName = tcQual pREL_GHC_Name SLIT("Int#") intPrimTyConKey +int32PrimTyConName = tcQual pREL_GHC_Name SLIT("Int32#") int32PrimTyConKey int64PrimTyConName = tcQual pREL_GHC_Name SLIT("Int64#") int64PrimTyConKey wordPrimTyConName = tcQual pREL_GHC_Name SLIT("Word#") wordPrimTyConKey +word32PrimTyConName = tcQual pREL_GHC_Name SLIT("Word32#") word32PrimTyConKey word64PrimTyConName = tcQual pREL_GHC_Name SLIT("Word64#") word64PrimTyConKey addrPrimTyConName = tcQual pREL_GHC_Name SLIT("Addr#") addrPrimTyConKey floatPrimTyConName = tcQual pREL_GHC_Name SLIT("Float#") floatPrimTyConKey @@ -375,6 +379,7 @@ eqStringName = varQual pREL_BASE_Name SLIT("eqString") eqStringIdKey -- Strings unpackCStringName = varQual pREL_BASE_Name SLIT("unpackCString#") unpackCStringIdKey +unpackCStringListName = varQual pREL_BASE_Name SLIT("unpackCStringList#") unpackCStringListIdKey unpackCStringAppendName = varQual pREL_BASE_Name SLIT("unpackAppendCString#") unpackCStringAppendIdKey unpackCStringFoldrName = varQual pREL_BASE_Name SLIT("unpackFoldrCString#") unpackCStringFoldrIdKey unpackCStringUtf8Name = varQual pREL_BASE_Name SLIT("unpackCStringUtf8#") unpackCStringUtf8IdKey @@ -480,6 +485,9 @@ addrDataConName = dataQual aDDR_Name SLIT("A#") addrDataConKey ptrTyConName = tcQual pREL_PTR_Name SLIT("Ptr") ptrTyConKey ptrDataConName = dataQual pREL_PTR_Name SLIT("Ptr") ptrDataConKey +funPtrTyConName = tcQual pREL_PTR_Name SLIT("FunPtr") funPtrTyConKey +funPtrDataConName = dataQual pREL_PTR_Name SLIT("FunPtr") funPtrDataConKey + -- Byte array types byteArrayTyConName = tcQual pREL_BYTEARR_Name SLIT("ByteArray") byteArrayTyConKey mutableByteArrayTyConName = tcQual pREL_BYTEARR_Name SLIT("MutableByteArray") mutableByteArrayTyConKey @@ -487,8 +495,8 @@ mutableByteArrayTyConName = tcQual pREL_BYTEARR_Name SLIT("MutableByteArray") m -- Forign objects and weak pointers foreignObjTyConName = tcQual fOREIGNOBJ_Name SLIT("ForeignObj") foreignObjTyConKey foreignObjDataConName = dataQual fOREIGNOBJ_Name SLIT("ForeignObj") foreignObjDataConKey -foreignPtrTyConName = tcQual pREL_IO_BASE_Name SLIT("ForeignPtr") foreignPtrTyConKey -foreignPtrDataConName = dataQual pREL_IO_BASE_Name SLIT("ForeignPtr") foreignPtrDataConKey +foreignPtrTyConName = tcQual pREL_FOREIGN_Name SLIT("ForeignPtr") foreignPtrTyConKey +foreignPtrDataConName = dataQual pREL_FOREIGN_Name SLIT("ForeignPtr") foreignPtrDataConKey stablePtrTyConName = tcQual pREL_STABLE_Name SLIT("StablePtr") stablePtrTyConKey stablePtrDataConName = dataQual pREL_STABLE_Name SLIT("StablePtr") stablePtrDataConKey deRefStablePtrName = varQual pREL_STABLE_Name SLIT("deRefStablePtr") deRefStablePtrIdKey @@ -693,57 +701,62 @@ intPrimTyConKey = mkPreludeTyConUnique 14 intTyConKey = mkPreludeTyConUnique 15 int8TyConKey = mkPreludeTyConUnique 16 int16TyConKey = mkPreludeTyConUnique 17 -int32TyConKey = mkPreludeTyConUnique 18 -int64PrimTyConKey = mkPreludeTyConUnique 19 -int64TyConKey = mkPreludeTyConUnique 20 -integerTyConKey = mkPreludeTyConUnique 21 -listTyConKey = mkPreludeTyConUnique 22 -foreignObjPrimTyConKey = mkPreludeTyConUnique 23 -foreignObjTyConKey = mkPreludeTyConUnique 24 -foreignPtrTyConKey = mkPreludeTyConUnique 25 -weakPrimTyConKey = mkPreludeTyConUnique 26 -mutableArrayPrimTyConKey = mkPreludeTyConUnique 27 -mutableByteArrayPrimTyConKey = mkPreludeTyConUnique 28 -orderingTyConKey = mkPreludeTyConUnique 29 -mVarPrimTyConKey = mkPreludeTyConUnique 30 -ratioTyConKey = mkPreludeTyConUnique 31 -rationalTyConKey = mkPreludeTyConUnique 32 -realWorldTyConKey = mkPreludeTyConUnique 33 -stablePtrPrimTyConKey = mkPreludeTyConUnique 34 -stablePtrTyConKey = mkPreludeTyConUnique 35 -statePrimTyConKey = mkPreludeTyConUnique 36 -stableNamePrimTyConKey = mkPreludeTyConUnique 50 -stableNameTyConKey = mkPreludeTyConUnique 51 -mutableByteArrayTyConKey = mkPreludeTyConUnique 52 -mutVarPrimTyConKey = mkPreludeTyConUnique 53 -ioTyConKey = mkPreludeTyConUnique 55 -byteArrayTyConKey = mkPreludeTyConUnique 56 -wordPrimTyConKey = mkPreludeTyConUnique 57 -wordTyConKey = mkPreludeTyConUnique 58 -word8TyConKey = mkPreludeTyConUnique 59 -word16TyConKey = mkPreludeTyConUnique 60 -word32TyConKey = mkPreludeTyConUnique 61 -word64PrimTyConKey = mkPreludeTyConUnique 62 -word64TyConKey = mkPreludeTyConUnique 63 -liftedConKey = mkPreludeTyConUnique 64 -unliftedConKey = mkPreludeTyConUnique 65 -anyBoxConKey = mkPreludeTyConUnique 66 -kindConKey = mkPreludeTyConUnique 67 -boxityConKey = mkPreludeTyConUnique 68 -typeConKey = mkPreludeTyConUnique 69 -threadIdPrimTyConKey = mkPreludeTyConUnique 70 -bcoPrimTyConKey = mkPreludeTyConUnique 71 -ptrTyConKey = mkPreludeTyConUnique 72 +int32PrimTyConKey = mkPreludeTyConUnique 18 +int32TyConKey = mkPreludeTyConUnique 19 +int64PrimTyConKey = mkPreludeTyConUnique 20 +int64TyConKey = mkPreludeTyConUnique 21 +integerTyConKey = mkPreludeTyConUnique 22 +listTyConKey = mkPreludeTyConUnique 23 +foreignObjPrimTyConKey = mkPreludeTyConUnique 24 +foreignObjTyConKey = mkPreludeTyConUnique 25 +foreignPtrTyConKey = mkPreludeTyConUnique 26 +weakPrimTyConKey = mkPreludeTyConUnique 27 +mutableArrayPrimTyConKey = mkPreludeTyConUnique 28 +mutableByteArrayPrimTyConKey = mkPreludeTyConUnique 29 +orderingTyConKey = mkPreludeTyConUnique 30 +mVarPrimTyConKey = mkPreludeTyConUnique 31 +ratioTyConKey = mkPreludeTyConUnique 32 +rationalTyConKey = mkPreludeTyConUnique 33 +realWorldTyConKey = mkPreludeTyConUnique 34 +stablePtrPrimTyConKey = mkPreludeTyConUnique 35 +stablePtrTyConKey = mkPreludeTyConUnique 36 +statePrimTyConKey = mkPreludeTyConUnique 50 +stableNamePrimTyConKey = mkPreludeTyConUnique 51 +stableNameTyConKey = mkPreludeTyConUnique 52 +mutableByteArrayTyConKey = mkPreludeTyConUnique 53 +mutVarPrimTyConKey = mkPreludeTyConUnique 55 +ioTyConKey = mkPreludeTyConUnique 56 +byteArrayTyConKey = mkPreludeTyConUnique 57 +wordPrimTyConKey = mkPreludeTyConUnique 58 +wordTyConKey = mkPreludeTyConUnique 59 +word8TyConKey = mkPreludeTyConUnique 60 +word16TyConKey = mkPreludeTyConUnique 61 +word32PrimTyConKey = mkPreludeTyConUnique 62 +word32TyConKey = mkPreludeTyConUnique 63 +word64PrimTyConKey = mkPreludeTyConUnique 64 +word64TyConKey = mkPreludeTyConUnique 65 +liftedConKey = mkPreludeTyConUnique 66 +unliftedConKey = mkPreludeTyConUnique 67 +anyBoxConKey = mkPreludeTyConUnique 68 +kindConKey = mkPreludeTyConUnique 69 +boxityConKey = mkPreludeTyConUnique 70 +typeConKey = mkPreludeTyConUnique 71 +threadIdPrimTyConKey = mkPreludeTyConUnique 72 +bcoPrimTyConKey = mkPreludeTyConUnique 73 +ptrTyConKey = mkPreludeTyConUnique 74 +funPtrTyConKey = mkPreludeTyConUnique 75 -- Usage type constructors -usageConKey = mkPreludeTyConUnique 73 -usOnceTyConKey = mkPreludeTyConUnique 74 -usManyTyConKey = mkPreludeTyConUnique 75 +usageConKey = mkPreludeTyConUnique 76 +usOnceTyConKey = mkPreludeTyConUnique 77 +usManyTyConKey = mkPreludeTyConUnique 78 -- Generic Type Constructors -crossTyConKey = mkPreludeTyConUnique 76 -plusTyConKey = mkPreludeTyConUnique 77 -genUnitTyConKey = mkPreludeTyConUnique 78 +crossTyConKey = mkPreludeTyConUnique 79 +plusTyConKey = mkPreludeTyConUnique 80 +genUnitTyConKey = mkPreludeTyConUnique 81 + +unitTyConKey = mkTupleTyConUnique Boxed 0 \end{code} %************************************************************************ @@ -772,12 +785,13 @@ trueDataConKey = mkPreludeDataConUnique 15 wordDataConKey = mkPreludeDataConUnique 16 ioDataConKey = mkPreludeDataConUnique 17 ptrDataConKey = mkPreludeDataConUnique 18 +funPtrDataConKey = mkPreludeDataConUnique 19 -- Generic data constructors -crossDataConKey = mkPreludeDataConUnique 19 -inlDataConKey = mkPreludeDataConUnique 20 -inrDataConKey = mkPreludeDataConUnique 21 -genUnitDataConKey = mkPreludeDataConUnique 22 +crossDataConKey = mkPreludeDataConUnique 20 +inlDataConKey = mkPreludeDataConUnique 21 +inrDataConKey = mkPreludeDataConUnique 22 +genUnitDataConKey = mkPreludeDataConUnique 23 \end{code} %************************************************************************ @@ -800,10 +814,12 @@ integerPlusOneIdKey = mkPreludeMiscIdUnique 10 integerPlusTwoIdKey = mkPreludeMiscIdUnique 11 integerZeroIdKey = mkPreludeMiscIdUnique 12 int2IntegerIdKey = mkPreludeMiscIdUnique 13 +seqIdKey = mkPreludeMiscIdUnique 14 irrefutPatErrorIdKey = mkPreludeMiscIdUnique 15 eqStringIdKey = mkPreludeMiscIdUnique 16 noMethodBindingErrorIdKey = mkPreludeMiscIdUnique 17 nonExhaustiveGuardsErrorIdKey = mkPreludeMiscIdUnique 18 +errorCStringIdKey = mkPreludeMiscIdUnique 19 parErrorIdKey = mkPreludeMiscIdUnique 20 parIdKey = mkPreludeMiscIdUnique 21 patErrorIdKey = mkPreludeMiscIdUnique 22 @@ -829,6 +845,9 @@ plusIntegerIdKey = mkPreludeMiscIdUnique 41 timesIntegerIdKey = mkPreludeMiscIdUnique 42 printIdKey = mkPreludeMiscIdUnique 43 failIOIdKey = mkPreludeMiscIdUnique 44 +unpackCStringListIdKey = mkPreludeMiscIdUnique 45 +nullAddrIdKey = mkPreludeMiscIdUnique 46 +voidArgIdKey = mkPreludeMiscIdUnique 47 \end{code} Certain class operations from Prelude classes. They get their own @@ -862,7 +881,6 @@ mapIdKey = mkPreludeMiscIdUnique 120 \begin{code} assertIdKey = mkPreludeMiscIdUnique 121 runSTRepIdKey = mkPreludeMiscIdUnique 122 -itIdKey = mkPreludeMiscIdUnique 123 -- "it" for the interactive interface \end{code} @@ -906,48 +924,6 @@ cCallishTyKeys = %************************************************************************ %* * -\subsection{Re-bindable desugaring names} -%* * -%************************************************************************ - -Haskell 98 says that when you say "3" you get the "fromInteger" from the -Standard Prelude, regardless of what is in scope. However, to experiment -with having a language that is less coupled to the standard prelude, we're -trying a non-standard extension that instead gives you whatever "Prelude.fromInteger" -happens to be in scope. Then you can - import Prelude () - import MyPrelude as Prelude -to get the desired effect. - -The SyntaxNames record gives all the names you can rebind in this way. -This record of names needs to go through the renamer to map RdrNames to -Names (i.e. look up the names in the in-scope environment), to suck in -their type signatures from interface file(s). - -\begin{code} -type SyntaxList = [(Name, RdrName)] - -- Maps a Name, which identifies the standard built-in thing - -- to a RdrName for the re-mapped version of the built-in thing - -syntaxList :: SyntaxList -syntaxList =[ (fromIntegerName, mkUnqual varName SLIT("fromInteger")) - , (fromRationalName, mkUnqual varName SLIT("fromRational")) - , (negateName, mkUnqual varName SLIT("negate")) - , (minusName, mkUnqual varName SLIT("-")) - -- For now that's all. We may add booleans and lists later. - ] - - -type SyntaxMap = Name -> Name - -- Maps a standard built-in name, such as PrelNum.fromInteger - -- to its re-mapped version, such as MyPrelude.fromInteger - -vanillaSyntaxMap name = name -\end{code} - - -%************************************************************************ -%* * \subsection[Class-std-groups]{Standard groups of Prelude classes} %* * %************************************************************************