#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,
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}
%************************************************************************
%* *
+\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}
%* *
%************************************************************************
cReturnableClassName, -- mentioned, ccallish
-- ClassOps
- fromIntName,
fromIntegerName,
negateName,
geName,
newStablePtrName,
bindIOName,
returnIOName,
+ failIOName,
-- Strings and lists
mapName,
word64TyConName,
-- Others
+ unsafeCoerceName,
otherwiseIdName,
plusIntegerName,
timesIntegerName,
pREL_NUM = mkPrelModule pREL_NUM_Name
pREL_REAL = mkPrelModule pREL_REAL_Name
pREL_FLOAT = mkPrelModule pREL_FLOAT_Name
+
+iNTERACTIVE = mkHomeModule (mkModuleName "$Interactive")
\end{code}
%************************************************************************
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
-- 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
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
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
-- 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
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}
%************************************************************************
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}
%************************************************************************
plusIntegerIdKey = mkPreludeMiscIdUnique 41
timesIntegerIdKey = mkPreludeMiscIdUnique 42
printIdKey = mkPreludeMiscIdUnique 43
+failIOIdKey = mkPreludeMiscIdUnique 44
\end{code}
Certain class operations from Prelude classes. They get their own
during type checking.
\begin{code}
-fromIntClassOpKey = mkPreludeMiscIdUnique 101
fromIntegerClassOpKey = mkPreludeMiscIdUnique 102
minusClassOpKey = mkPreludeMiscIdUnique 103
fromRationalClassOpKey = mkPreludeMiscIdUnique 104
%* *
%************************************************************************
-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
-- 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("-"))
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}
= 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}