X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Fprelude%2FPrelNames.lhs;h=26692c3fbb806b4a02ba8e526799b209ba1ebf1b;hb=7d4e5c1a5010838489f29d663618d0b74ec0cb1d;hp=cf2e96db04556942e560c72be9c4d6bde6714ebf;hpb=5e6242927839c8ddc73a55eb7828c0b7e4cc3ab2;p=ghc-hetmet.git diff --git a/ghc/compiler/prelude/PrelNames.lhs b/ghc/compiler/prelude/PrelNames.lhs index cf2e96d..26692c3 100644 --- a/ghc/compiler/prelude/PrelNames.lhs +++ b/ghc/compiler/prelude/PrelNames.lhs @@ -38,8 +38,10 @@ module PrelNames ( #include "HsVersions.h" -import Module ( ModuleName, mkPrelModule, mkModuleName ) -import OccName ( NameSpace, UserFS, varName, dataName, tcName, clsName, mkKindOccFS ) +import Module ( ModuleName, mkPrelModule, mkHomeModule, mkModuleName ) +import OccName ( NameSpace, UserFS, varName, dataName, tcName, clsName, + mkKindOccFS, mkOccFS + ) import RdrName ( RdrName, mkOrig, mkUnqual ) import UniqFM import Unique ( Unique, Uniquable(..), hasKey, @@ -50,7 +52,7 @@ import BasicTypes ( Boxity(..), Arity ) import UniqFM ( UniqFM, listToUFM ) import Name ( Name, mkLocalName, mkKnownKeyGlobal, nameRdrName ) import RdrName ( rdrNameOcc ) -import SrcLoc ( builtinSrcLoc ) +import SrcLoc ( builtinSrcLoc, noSrcLoc ) import Util ( nOfThem ) import Panic ( panic ) \end{code} @@ -58,6 +60,29 @@ import Panic ( panic ) %************************************************************************ %* * +\subsection{Local Names} +%* * +%************************************************************************ + +This *local* name is used by the interactive stuff + +\begin{code} +itName uniq = mkLocalName uniq (mkOccFS varName SLIT("it")) noSrcLoc +\end{code} + +\begin{code} +-- mkUnboundName makes a place-holder Name; it shouldn't be looked at except possibly +-- during compiler debugging. +mkUnboundName :: RdrName -> Name +mkUnboundName rdr_name = mkLocalName unboundKey (rdrNameOcc rdr_name) builtinSrcLoc + +isUnboundName :: Name -> Bool +isUnboundName name = name `hasKey` unboundKey +\end{code} + + +%************************************************************************ +%* * \subsection{Known key Names} %* * %************************************************************************ @@ -109,7 +134,6 @@ knownKeyNames cReturnableClassName, -- mentioned, ccallish -- ClassOps - fromIntName, fromIntegerName, negateName, geName, @@ -130,6 +154,7 @@ knownKeyNames newStablePtrName, bindIOName, returnIOName, + failIOName, -- Strings and lists mapName, @@ -158,6 +183,7 @@ knownKeyNames word64TyConName, -- Others + unsafeCoerceName, otherwiseIdName, plusIntegerName, timesIntegerName, @@ -219,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} %************************************************************************ @@ -338,6 +366,7 @@ 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 otherwiseIdName = varQual pREL_BASE_Name SLIT("otherwise") otherwiseIdKey appendName = varQual pREL_BASE_Name SLIT("++") appendIdKey foldrName = varQual pREL_BASE_Name SLIT("foldr") foldrIdKey @@ -376,7 +405,6 @@ readClassName = clsQual pREL_READ_Name SLIT("Read") readClassKey -- Module PrelNum numClassName = clsQual pREL_NUM_Name SLIT("Num") numClassKey -fromIntName = varQual pREL_NUM_Name SLIT("fromInt") fromIntClassOpKey fromIntegerName = varQual pREL_NUM_Name SLIT("fromInteger") fromIntegerClassOpKey minusName = varQual pREL_NUM_Name SLIT("-") minusClassOpKey negateName = varQual pREL_NUM_Name SLIT("negate") negateClassOpKey @@ -429,6 +457,7 @@ ioTyConName = tcQual pREL_IO_BASE_Name SLIT("IO") ioTyConKey ioDataConName = dataQual pREL_IO_BASE_Name SLIT("IO") ioDataConKey bindIOName = varQual pREL_IO_BASE_Name SLIT("bindIO") bindIOIdKey returnIOName = varQual pREL_IO_BASE_Name SLIT("returnIO") returnIOIdKey +failIOName = varQual pREL_IO_BASE_Name SLIT("failIO") failIOIdKey -- IO things printName = varQual pREL_IO_Name SLIT("print") printIdKey @@ -453,6 +482,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 @@ -460,8 +492,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 @@ -707,16 +739,17 @@ typeConKey = mkPreludeTyConUnique 69 threadIdPrimTyConKey = mkPreludeTyConUnique 70 bcoPrimTyConKey = mkPreludeTyConUnique 71 ptrTyConKey = mkPreludeTyConUnique 72 +funPtrTyConKey = mkPreludeTyConUnique 73 -- Usage type constructors -usageConKey = mkPreludeTyConUnique 73 -usOnceTyConKey = mkPreludeTyConUnique 74 -usManyTyConKey = mkPreludeTyConUnique 75 +usageConKey = mkPreludeTyConUnique 74 +usOnceTyConKey = mkPreludeTyConUnique 75 +usManyTyConKey = mkPreludeTyConUnique 76 -- Generic Type Constructors -crossTyConKey = mkPreludeTyConUnique 76 -plusTyConKey = mkPreludeTyConUnique 77 -genUnitTyConKey = mkPreludeTyConUnique 78 +crossTyConKey = mkPreludeTyConUnique 77 +plusTyConKey = mkPreludeTyConUnique 78 +genUnitTyConKey = mkPreludeTyConUnique 79 \end{code} %************************************************************************ @@ -745,12 +778,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} %************************************************************************ @@ -801,6 +835,7 @@ getTagIdKey = mkPreludeMiscIdUnique 40 plusIntegerIdKey = mkPreludeMiscIdUnique 41 timesIntegerIdKey = mkPreludeMiscIdUnique 42 printIdKey = mkPreludeMiscIdUnique 43 +failIOIdKey = mkPreludeMiscIdUnique 44 \end{code} Certain class operations from Prelude classes. They get their own @@ -808,7 +843,6 @@ uniques so we can look them up easily when we want to conjure them up during type checking. \begin{code} -fromIntClassOpKey = mkPreludeMiscIdUnique 101 fromIntegerClassOpKey = mkPreludeMiscIdUnique 102 minusClassOpKey = mkPreludeMiscIdUnique 103 fromRationalClassOpKey = mkPreludeMiscIdUnique 104 @@ -882,10 +916,10 @@ cCallishTyKeys = %* * %************************************************************************ -Haskell 98 says that when you say "3" you get the "fromInt" from the +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.fromInt" +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 @@ -902,8 +936,7 @@ type SyntaxList = [(Name, RdrName)] -- to a RdrName for the re-mapped version of the built-in thing syntaxList :: SyntaxList -syntaxList =[ (fromIntName, mkUnqual varName SLIT("fromInt")) - , (fromIntegerName, mkUnqual varName SLIT("fromInteger")) +syntaxList =[ (fromIntegerName, mkUnqual varName SLIT("fromInteger")) , (fromRationalName, mkUnqual varName SLIT("fromRational")) , (negateName, mkUnqual varName SLIT("negate")) , (minusName, mkUnqual varName SLIT("-")) @@ -912,8 +945,8 @@ syntaxList =[ (fromIntName, mkUnqual varName SLIT("fromInt")) type SyntaxMap = Name -> Name - -- Maps a standard built-in name, such as PrelNum.fromInt - -- to its re-mapped version, such as MyPrelude.fromInt + -- Maps a standard built-in name, such as PrelNum.fromInteger + -- to its re-mapped version, such as MyPrelude.fromInteger vanillaSyntaxMap name = name \end{code} @@ -1026,12 +1059,3 @@ noDictClassKeys -- These classes are used only for type annotations; = cCallishClassKeys \end{code} -\begin{code} --- mkUnboundName makes a place-holder Name; it shouldn't be looked at except possibly --- during compiler debugging. -mkUnboundName :: RdrName -> Name -mkUnboundName rdr_name = mkLocalName unboundKey (rdrNameOcc rdr_name) builtinSrcLoc - -isUnboundName :: Name -> Bool -isUnboundName name = name `hasKey` unboundKey -\end{code}