#include "HsVersions.h"
-import Module ( Module, mkBasePkgModule, mkHomeModule, mkModuleName )
+import Module ( Module, mkModule )
import OccName ( dataName, tcName, clsName, varName, mkOccFS
)
import Unique ( Unique, Uniquable(..), hasKey,
mkPreludeMiscIdUnique, mkPreludeDataConUnique,
mkPreludeTyConUnique, mkPreludeClassUnique,
- mkTupleTyConUnique, isTupleKey
+ mkTupleTyConUnique
)
import BasicTypes ( Boxity(..), Arity )
-import Name ( Name, mkInternalName, mkExternalName, nameUnique, nameModule )
+import Name ( Name, mkInternalName, mkExternalName, nameModule )
import SrcLoc ( noSrcLoc )
import FastString
\end{code}
%************************************************************************
%* *
-\subsection{Built-in-syntax names
-%* *
-%************************************************************************
-
-Built-in syntax names are parsed directly into Exact RdrNames.
-This predicate just identifies them.
-
-\begin{code}
-isBuiltInSyntaxName :: Name -> Bool
-isBuiltInSyntaxName n
- = isTupleKey uniq
- || uniq `elem` [listTyConKey, nilDataConKey, consDataConKey,
- funTyConKey, parrTyConKey]
- where
- uniq = nameUnique n
-\end{code}
-
-%************************************************************************
-%* *
\subsection{Known key Names}
%* *
%************************************************************************
++ typeableClassNames
++ [ -- Type constructors (synonyms especially)
ioTyConName, ioDataConName,
- runIOName,
+ runMainIOName,
orderingTyConName,
rationalTyConName,
ratioDataConName,
otherwiseIdName,
plusIntegerName, timesIntegerName,
eqStringName, assertName, assertErrorName, runSTRepName,
- printName, splitName, fstName, sndName,
+ printName, fstName, sndName,
+
+ -- MonadFix
+ monadFixClassName, mfixName,
+
+ -- Splittable class
+ splittableClassName, splitName,
-- Booleans
andName, orName
--MetaHaskell Extension Add a new module here
\begin{code}
-pRELUDE_Name = mkModuleName "Prelude"
-gHC_PRIM_Name = mkModuleName "GHC.Prim" -- Primitive types and values
-pREL_BASE_Name = mkModuleName "GHC.Base"
-pREL_ENUM_Name = mkModuleName "GHC.Enum"
-pREL_SHOW_Name = mkModuleName "GHC.Show"
-pREL_READ_Name = mkModuleName "GHC.Read"
-pREL_NUM_Name = mkModuleName "GHC.Num"
-pREL_LIST_Name = mkModuleName "GHC.List"
-pREL_PARR_Name = mkModuleName "GHC.PArr"
-pREL_TUP_Name = mkModuleName "Data.Tuple"
-pREL_EITHER_Name = mkModuleName "Data.Either"
-pREL_PACK_Name = mkModuleName "GHC.Pack"
-pREL_CONC_Name = mkModuleName "GHC.Conc"
-pREL_IO_BASE_Name = mkModuleName "GHC.IOBase"
-pREL_ST_Name = mkModuleName "GHC.ST"
-pREL_ARR_Name = mkModuleName "GHC.Arr"
-pREL_BYTEARR_Name = mkModuleName "PrelByteArr"
-pREL_STABLE_Name = mkModuleName "GHC.Stable"
-pREL_ADDR_Name = mkModuleName "GHC.Addr"
-pREL_PTR_Name = mkModuleName "GHC.Ptr"
-pREL_ERR_Name = mkModuleName "GHC.Err"
-pREL_REAL_Name = mkModuleName "GHC.Real"
-pREL_FLOAT_Name = mkModuleName "GHC.Float"
-pREL_TOP_HANDLER_Name = mkModuleName "GHC.TopHandler"
-sYSTEM_IO_Name = mkModuleName "System.IO"
-dYNAMIC_Name = mkModuleName "Data.Dynamic"
-tYPEABLE_Name = mkModuleName "Data.Typeable"
-gENERICS_Name = mkModuleName "Data.Generics.Basics"
-dOTNET_Name = mkModuleName "GHC.Dotnet"
-
-rEAD_PREC_Name = mkModuleName "Text.ParserCombinators.ReadPrec"
-lEX_Name = mkModuleName "Text.Read.Lex"
-
-mAIN_Name = mkModuleName "Main"
-pREL_INT_Name = mkModuleName "GHC.Int"
-pREL_WORD_Name = mkModuleName "GHC.Word"
-mONAD_FIX_Name = mkModuleName "Control.Monad.Fix"
-aRROW_Name = mkModuleName "Control.Arrow"
-aDDR_Name = mkModuleName "Addr"
-
-gLA_EXTS_Name = mkModuleName "GHC.Exts"
-
-gHC_PRIM = mkBasePkgModule gHC_PRIM_Name
-pREL_BASE = mkBasePkgModule pREL_BASE_Name
-pREL_TUP = mkBasePkgModule pREL_TUP_Name
-pREL_EITHER = mkBasePkgModule pREL_EITHER_Name
-pREL_LIST = mkBasePkgModule pREL_LIST_Name
-pREL_SHOW = mkBasePkgModule pREL_SHOW_Name
-pREL_READ = mkBasePkgModule pREL_READ_Name
-pREL_ADDR = mkBasePkgModule pREL_ADDR_Name
-pREL_WORD = mkBasePkgModule pREL_WORD_Name
-pREL_INT = mkBasePkgModule pREL_INT_Name
-pREL_PTR = mkBasePkgModule pREL_PTR_Name
-pREL_ST = mkBasePkgModule pREL_ST_Name
-pREL_STABLE = mkBasePkgModule pREL_STABLE_Name
-pREL_IO_BASE = mkBasePkgModule pREL_IO_BASE_Name
-pREL_PACK = mkBasePkgModule pREL_PACK_Name
-pREL_ERR = mkBasePkgModule pREL_ERR_Name
-pREL_NUM = mkBasePkgModule pREL_NUM_Name
-pREL_ENUM = mkBasePkgModule pREL_ENUM_Name
-pREL_REAL = mkBasePkgModule pREL_REAL_Name
-pREL_FLOAT = mkBasePkgModule pREL_FLOAT_Name
-pREL_ARR = mkBasePkgModule pREL_ARR_Name
-pREL_PARR = mkBasePkgModule pREL_PARR_Name
-pREL_BYTEARR = mkBasePkgModule pREL_BYTEARR_Name
-pREL_TOP_HANDLER= mkBasePkgModule pREL_TOP_HANDLER_Name
-pRELUDE = mkBasePkgModule pRELUDE_Name
-sYSTEM_IO = mkBasePkgModule sYSTEM_IO_Name
-aDDR = mkBasePkgModule aDDR_Name
-aRROW = mkBasePkgModule aRROW_Name
-gENERICS = mkBasePkgModule gENERICS_Name
-tYPEABLE = mkBasePkgModule tYPEABLE_Name
-dOTNET = mkBasePkgModule dOTNET_Name
-gLA_EXTS = mkBasePkgModule gLA_EXTS_Name
-mONAD_FIX = mkBasePkgModule mONAD_FIX_Name
-
-rOOT_MAIN_Name = mkModuleName ":Main" -- Root module for initialisation
-rOOT_MAIN = mkHomeModule rOOT_MAIN_Name
+pRELUDE = mkModule "Prelude"
+gHC_PRIM = mkModule "GHC.Prim" -- Primitive types and values
+pREL_BASE = mkModule "GHC.Base"
+pREL_ENUM = mkModule "GHC.Enum"
+pREL_SHOW = mkModule "GHC.Show"
+pREL_READ = mkModule "GHC.Read"
+pREL_NUM = mkModule "GHC.Num"
+pREL_LIST = mkModule "GHC.List"
+pREL_PARR = mkModule "GHC.PArr"
+pREL_TUP = mkModule "Data.Tuple"
+pREL_EITHER = mkModule "Data.Either"
+pREL_PACK = mkModule "GHC.Pack"
+pREL_CONC = mkModule "GHC.Conc"
+pREL_IO_BASE = mkModule "GHC.IOBase"
+pREL_ST = mkModule "GHC.ST"
+pREL_ARR = mkModule "GHC.Arr"
+pREL_BYTEARR = mkModule "PrelByteArr"
+pREL_STABLE = mkModule "GHC.Stable"
+pREL_ADDR = mkModule "GHC.Addr"
+pREL_PTR = mkModule "GHC.Ptr"
+pREL_ERR = mkModule "GHC.Err"
+pREL_REAL = mkModule "GHC.Real"
+pREL_FLOAT = mkModule "GHC.Float"
+pREL_TOP_HANDLER= mkModule "GHC.TopHandler"
+sYSTEM_IO = mkModule "System.IO"
+dYNAMIC = mkModule "Data.Dynamic"
+tYPEABLE = mkModule "Data.Typeable"
+gENERICS = mkModule "Data.Generics.Basics"
+dOTNET = mkModule "GHC.Dotnet"
+
+rEAD_PREC = mkModule "Text.ParserCombinators.ReadPrec"
+lEX = mkModule "Text.Read.Lex"
+
+mAIN = mkModule "Main"
+pREL_INT = mkModule "GHC.Int"
+pREL_WORD = mkModule "GHC.Word"
+mONAD_FIX = mkModule "Control.Monad.Fix"
+aRROW = mkModule "Control.Arrow"
+aDDR = mkModule "Addr"
+
+gLA_EXTS = mkModule "GHC.Exts"
+rOOT_MAIN = mkModule ":Main" -- Root module for initialisation
-- The ':xxx' makes a moudle name that the user can never
-- use himself. The z-encoding for ':' is "ZC", so the z-encoded
-- module name still starts with a capital letter, which keeps
-- the z-encoded version consistent.
-iNTERACTIVE = mkHomeModule (mkModuleName ":Interactive")
+
+iNTERACTIVE = mkModule ":Interactive"
\end{code}
%************************************************************************
eq_RDR = nameRdrName eqName
ge_RDR = nameRdrName geName
-ne_RDR = varQual_RDR pREL_BASE_Name FSLIT("/=")
-le_RDR = varQual_RDR pREL_BASE_Name FSLIT("<=")
-gt_RDR = varQual_RDR pREL_BASE_Name FSLIT(">")
-compare_RDR = varQual_RDR pREL_BASE_Name FSLIT("compare")
-ltTag_RDR = dataQual_RDR pREL_BASE_Name FSLIT("LT")
-eqTag_RDR = dataQual_RDR pREL_BASE_Name FSLIT("EQ")
-gtTag_RDR = dataQual_RDR pREL_BASE_Name FSLIT("GT")
+ne_RDR = varQual_RDR pREL_BASE FSLIT("/=")
+le_RDR = varQual_RDR pREL_BASE FSLIT("<=")
+gt_RDR = varQual_RDR pREL_BASE FSLIT(">")
+compare_RDR = varQual_RDR pREL_BASE FSLIT("compare")
+ltTag_RDR = dataQual_RDR pREL_BASE FSLIT("LT")
+eqTag_RDR = dataQual_RDR pREL_BASE FSLIT("EQ")
+gtTag_RDR = dataQual_RDR pREL_BASE FSLIT("GT")
eqClass_RDR = nameRdrName eqClassName
numClass_RDR = nameRdrName numClassName
enumClass_RDR = nameRdrName enumClassName
monadClass_RDR = nameRdrName monadClassName
-map_RDR = varQual_RDR pREL_BASE_Name FSLIT("map")
-append_RDR = varQual_RDR pREL_BASE_Name FSLIT("++")
+map_RDR = varQual_RDR pREL_BASE FSLIT("map")
+append_RDR = varQual_RDR pREL_BASE FSLIT("++")
foldr_RDR = nameRdrName foldrName
build_RDR = nameRdrName buildName
left_RDR = nameRdrName leftDataConName
right_RDR = nameRdrName rightDataConName
-fromEnum_RDR = varQual_RDR pREL_ENUM_Name FSLIT("fromEnum")
-toEnum_RDR = varQual_RDR pREL_ENUM_Name FSLIT("toEnum")
+fromEnum_RDR = varQual_RDR pREL_ENUM FSLIT("fromEnum")
+toEnum_RDR = varQual_RDR pREL_ENUM FSLIT("toEnum")
enumFrom_RDR = nameRdrName enumFromName
enumFromTo_RDR = nameRdrName enumFromToName
unpackCStringUtf8_RDR = nameRdrName unpackCStringUtf8Name
newStablePtr_RDR = nameRdrName newStablePtrName
-addrDataCon_RDR = dataQual_RDR aDDR_Name FSLIT("A#")
-wordDataCon_RDR = dataQual_RDR pREL_WORD_Name FSLIT("W#")
+addrDataCon_RDR = dataQual_RDR aDDR FSLIT("A#")
+wordDataCon_RDR = dataQual_RDR pREL_WORD FSLIT("W#")
bindIO_RDR = nameRdrName bindIOName
returnIO_RDR = nameRdrName returnIOName
fromInteger_RDR = nameRdrName fromIntegerName
fromRational_RDR = nameRdrName fromRationalName
minus_RDR = nameRdrName minusName
-times_RDR = varQual_RDR pREL_NUM_Name FSLIT("*")
-plus_RDR = varQual_RDR pREL_NUM_Name FSLIT("+")
-
-compose_RDR = varQual_RDR pREL_BASE_Name FSLIT(".")
-
-not_RDR = varQual_RDR pREL_BASE_Name FSLIT("not")
-getTag_RDR = varQual_RDR pREL_BASE_Name FSLIT("getTag")
-succ_RDR = varQual_RDR pREL_ENUM_Name FSLIT("succ")
-pred_RDR = varQual_RDR pREL_ENUM_Name FSLIT("pred")
-minBound_RDR = varQual_RDR pREL_ENUM_Name FSLIT("minBound")
-maxBound_RDR = varQual_RDR pREL_ENUM_Name FSLIT("maxBound")
-range_RDR = varQual_RDR pREL_ARR_Name FSLIT("range")
-inRange_RDR = varQual_RDR pREL_ARR_Name FSLIT("inRange")
-index_RDR = varQual_RDR pREL_ARR_Name FSLIT("index")
-
-readList_RDR = varQual_RDR pREL_READ_Name FSLIT("readList")
-readListDefault_RDR = varQual_RDR pREL_READ_Name FSLIT("readListDefault")
-readListPrec_RDR = varQual_RDR pREL_READ_Name FSLIT("readListPrec")
-readListPrecDefault_RDR = varQual_RDR pREL_READ_Name FSLIT("readListPrecDefault")
-readPrec_RDR = varQual_RDR pREL_READ_Name FSLIT("readPrec")
-parens_RDR = varQual_RDR pREL_READ_Name FSLIT("parens")
-choose_RDR = varQual_RDR pREL_READ_Name FSLIT("choose")
-lexP_RDR = varQual_RDR pREL_READ_Name FSLIT("lexP")
-
-punc_RDR = dataQual_RDR lEX_Name FSLIT("Punc")
-ident_RDR = dataQual_RDR lEX_Name FSLIT("Ident")
-symbol_RDR = dataQual_RDR lEX_Name FSLIT("Symbol")
-
-step_RDR = varQual_RDR rEAD_PREC_Name FSLIT("step")
-alt_RDR = varQual_RDR rEAD_PREC_Name FSLIT("+++")
-reset_RDR = varQual_RDR rEAD_PREC_Name FSLIT("reset")
-prec_RDR = varQual_RDR rEAD_PREC_Name FSLIT("prec")
-
-showList_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showList")
-showList___RDR = varQual_RDR pREL_SHOW_Name FSLIT("showList__")
-showsPrec_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showsPrec")
-showString_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showString")
-showSpace_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showSpace")
-showParen_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showParen")
-
-typeOf_RDR = varQual_RDR tYPEABLE_Name FSLIT("typeOf")
-mkTypeRep_RDR = varQual_RDR tYPEABLE_Name FSLIT("mkTyConApp")
-mkTyConRep_RDR = varQual_RDR tYPEABLE_Name FSLIT("mkTyCon")
-
-undefined_RDR = varQual_RDR pREL_ERR_Name FSLIT("undefined")
-
-crossDataCon_RDR = dataQual_RDR pREL_BASE_Name FSLIT(":*:")
-inlDataCon_RDR = dataQual_RDR pREL_BASE_Name FSLIT("Inl")
-inrDataCon_RDR = dataQual_RDR pREL_BASE_Name FSLIT("Inr")
-genUnitDataCon_RDR = dataQual_RDR pREL_BASE_Name FSLIT("Unit")
+times_RDR = varQual_RDR pREL_NUM FSLIT("*")
+plus_RDR = varQual_RDR pREL_NUM FSLIT("+")
+
+compose_RDR = varQual_RDR pREL_BASE FSLIT(".")
+
+not_RDR = varQual_RDR pREL_BASE FSLIT("not")
+getTag_RDR = varQual_RDR pREL_BASE FSLIT("getTag")
+succ_RDR = varQual_RDR pREL_ENUM FSLIT("succ")
+pred_RDR = varQual_RDR pREL_ENUM FSLIT("pred")
+minBound_RDR = varQual_RDR pREL_ENUM FSLIT("minBound")
+maxBound_RDR = varQual_RDR pREL_ENUM FSLIT("maxBound")
+range_RDR = varQual_RDR pREL_ARR FSLIT("range")
+inRange_RDR = varQual_RDR pREL_ARR FSLIT("inRange")
+index_RDR = varQual_RDR pREL_ARR FSLIT("index")
+
+readList_RDR = varQual_RDR pREL_READ FSLIT("readList")
+readListDefault_RDR = varQual_RDR pREL_READ FSLIT("readListDefault")
+readListPrec_RDR = varQual_RDR pREL_READ FSLIT("readListPrec")
+readListPrecDefault_RDR = varQual_RDR pREL_READ FSLIT("readListPrecDefault")
+readPrec_RDR = varQual_RDR pREL_READ FSLIT("readPrec")
+parens_RDR = varQual_RDR pREL_READ FSLIT("parens")
+choose_RDR = varQual_RDR pREL_READ FSLIT("choose")
+lexP_RDR = varQual_RDR pREL_READ FSLIT("lexP")
+
+punc_RDR = dataQual_RDR lEX FSLIT("Punc")
+ident_RDR = dataQual_RDR lEX FSLIT("Ident")
+symbol_RDR = dataQual_RDR lEX FSLIT("Symbol")
+
+step_RDR = varQual_RDR rEAD_PREC FSLIT("step")
+alt_RDR = varQual_RDR rEAD_PREC FSLIT("+++")
+reset_RDR = varQual_RDR rEAD_PREC FSLIT("reset")
+prec_RDR = varQual_RDR rEAD_PREC FSLIT("prec")
+
+showList_RDR = varQual_RDR pREL_SHOW FSLIT("showList")
+showList___RDR = varQual_RDR pREL_SHOW FSLIT("showList__")
+showsPrec_RDR = varQual_RDR pREL_SHOW FSLIT("showsPrec")
+showString_RDR = varQual_RDR pREL_SHOW FSLIT("showString")
+showSpace_RDR = varQual_RDR pREL_SHOW FSLIT("showSpace")
+showParen_RDR = varQual_RDR pREL_SHOW FSLIT("showParen")
+
+typeOf_RDR = varQual_RDR tYPEABLE FSLIT("typeOf")
+mkTypeRep_RDR = varQual_RDR tYPEABLE FSLIT("mkTyConApp")
+mkTyConRep_RDR = varQual_RDR tYPEABLE FSLIT("mkTyCon")
+
+undefined_RDR = varQual_RDR pREL_ERR FSLIT("undefined")
+
+crossDataCon_RDR = dataQual_RDR pREL_BASE FSLIT(":*:")
+inlDataCon_RDR = dataQual_RDR pREL_BASE FSLIT("Inl")
+inrDataCon_RDR = dataQual_RDR pREL_BASE FSLIT("Inr")
+genUnitDataCon_RDR = dataQual_RDR pREL_BASE FSLIT("Unit")
----------------------
varQual_RDR mod str = mkOrig mod (mkOccFS varName str)
\begin{code}
-rootMainName = varQual rOOT_MAIN FSLIT("main") rootMainKey
-runIOName = varQual pREL_TOP_HANDLER FSLIT("runIO") runMainKey
+rootMainName = varQual rOOT_MAIN FSLIT("main") rootMainKey
+runMainIOName = varQual pREL_TOP_HANDLER FSLIT("runMainIO") runMainKey
orderingTyConName = tcQual pREL_BASE FSLIT("Ordering") orderingTyConKey
runSTRepName = varQual pREL_ST FSLIT("runSTRep") runSTRepIdKey
-- The "split" Id for splittable implicit parameters
-splitName = varQual gLA_EXTS FSLIT("split") splitIdKey
+splittableClassName = clsQual gLA_EXTS FSLIT("Splittable") splittableClassKey
+splitName = methName splittableClassName FSLIT("split") splitIdKey
-- Recursive-do notation
-mfixName = varQual mONAD_FIX FSLIT("mfix") mfixIdKey
+monadFixClassName = clsQual mONAD_FIX FSLIT("MonadFix") monadFixClassKey
+mfixName = methName monadFixClassName FSLIT("mfix") mfixIdKey
-- Arrow notation
arrAName = varQual aRROW FSLIT("arr") arrAIdKey
typeable5ClassKey = mkPreludeClassUnique 25
typeable6ClassKey = mkPreludeClassUnique 26
typeable7ClassKey = mkPreludeClassUnique 27
+
+monadFixClassKey = mkPreludeClassUnique 28
+splittableClassKey = mkPreludeClassUnique 29
\end{code}
%************************************************************************
bcoPrimTyConKey = mkPreludeTyConUnique 73
ptrTyConKey = mkPreludeTyConUnique 74
funPtrTyConKey = mkPreludeTyConUnique 75
+tVarPrimTyConKey = mkPreludeTyConUnique 76
-- Generic Type Constructors
crossTyConKey = mkPreludeTyConUnique 79
eitherTyConKey = mkPreludeTyConUnique 84
---------------- Template Haskell -------------------
--- USES TyConUniques 100-119
+-- USES TyConUniques 100-129
-----------------------------------------------------
unitTyConKey = mkTupleTyConUnique Boxed 0
loopAIdKey = mkPreludeMiscIdUnique 124
---------------- Template Haskell -------------------
--- USES IdUniques 200-299
+-- USES IdUniques 200-399
-----------------------------------------------------
\end{code}