import SrcLoc ( builtinSrcLoc, noSrcLoc )
import Util ( nOfThem )
import Panic ( panic )
+import FastString
\end{code}
= [
-- Type constructors (synonyms especially)
ioTyConName, ioDataConName,
- runMainName,
+ runIOName,
orderingTyConName,
rationalTyConName,
ratioDataConName,
ratioTyConName,
byteArrayTyConName,
mutableByteArrayTyConName,
- foreignObjTyConName,
- foreignPtrTyConName,
bcoPrimTyConName,
stablePtrTyConName,
stablePtrDataConName,
toEnumName,
eqName,
thenMName,
+ bindMName,
returnMName,
failMName,
fromRationalName,
deRefStablePtrName,
newStablePtrName,
bindIOName,
+ thenIOName,
returnIOName,
failIOName,
andName,
orName
]
+
+monadNames :: [Name] -- The monad ops need by a HsDo
+monadNames = [returnMName, failMName, bindMName, thenMName]
\end{code}
pREL_ST_Name = mkModuleName "GHC.ST"
pREL_ARR_Name = mkModuleName "GHC.Arr"
pREL_BYTEARR_Name = mkModuleName "PrelByteArr"
-fOREIGN_PTR_Name = mkModuleName "Foreign.ForeignPtr"
pREL_STABLE_Name = mkModuleName "GHC.Stable"
-pREL_SPLIT_Name = mkModuleName "GHC.Split"
pREL_ADDR_Name = mkModuleName "GHC.Addr"
pREL_PTR_Name = mkModuleName "GHC.Ptr"
pREL_ERR_Name = mkModuleName "GHC.Err"
pREL_TOP_HANDLER_Name = mkModuleName "GHC.TopHandler"
sYSTEM_IO_Name = mkModuleName "System.IO"
+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"
-fOREIGNOBJ_Name = mkModuleName "ForeignObj"
aDDR_Name = mkModuleName "Addr"
-gLA_EXTS_Name = mkModuleName "GlaExts"
+gLA_EXTS_Name = mkModuleName "GHC.Exts"
gHC_PRIM = mkPrelModule gHC_PRIM_Name
pREL_BASE = mkPrelModule pREL_BASE_Name
mkTupNameStr Boxed 0 = (pREL_BASE_Name, FSLIT("()"))
mkTupNameStr Boxed 1 = panic "Name.mkTupNameStr: 1 ???"
-mkTupNameStr Boxed 2 = (pREL_TUP_Name, _PK_ "(,)") -- not strictly necessary
-mkTupNameStr Boxed 3 = (pREL_TUP_Name, _PK_ "(,,)") -- ditto
-mkTupNameStr Boxed 4 = (pREL_TUP_Name, _PK_ "(,,,)") -- ditto
-mkTupNameStr Boxed n = (pREL_TUP_Name, _PK_ ("(" ++ nOfThem (n-1) ',' ++ ")"))
+mkTupNameStr Boxed 2 = (pREL_TUP_Name, mkFastString "(,)") -- not strictly necessary
+mkTupNameStr Boxed 3 = (pREL_TUP_Name, mkFastString "(,,)") -- ditto
+mkTupNameStr Boxed 4 = (pREL_TUP_Name, mkFastString "(,,,)") -- ditto
+mkTupNameStr Boxed n = (pREL_TUP_Name, mkFastString ("(" ++ nOfThem (n-1) ',' ++ ")"))
mkTupNameStr Unboxed 0 = panic "Name.mkUbxTupNameStr: 0 ???"
-mkTupNameStr Unboxed 1 = (gHC_PRIM_Name, _PK_ "(# #)") -- 1 and 0 both make sense!!!
-mkTupNameStr Unboxed 2 = (gHC_PRIM_Name, _PK_ "(#,#)")
-mkTupNameStr Unboxed 3 = (gHC_PRIM_Name, _PK_ "(#,,#)")
-mkTupNameStr Unboxed 4 = (gHC_PRIM_Name, _PK_ "(#,,,#)")
-mkTupNameStr Unboxed n = (gHC_PRIM_Name, _PK_ ("(#" ++ nOfThem (n-1) ',' ++ "#)"))
+mkTupNameStr Unboxed 1 = (gHC_PRIM_Name, mkFastString "(# #)") -- 1 and 0 both make sense!!!
+mkTupNameStr Unboxed 2 = (gHC_PRIM_Name, mkFastString "(#,#)")
+mkTupNameStr Unboxed 3 = (gHC_PRIM_Name, mkFastString "(#,,#)")
+mkTupNameStr Unboxed 4 = (gHC_PRIM_Name, mkFastString "(#,,,#)")
+mkTupNameStr Unboxed n = (gHC_PRIM_Name, mkFastString ("(#" ++ nOfThem (n-1) ',' ++ "#)"))
mkTupConRdrName :: NameSpace -> Boxity -> Arity -> RdrName
mkTupConRdrName space boxity arity = case mkTupNameStr boxity arity of
\begin{code}
dollarMainName = varQual mAIN_Name FSLIT("$main") dollarMainKey
-runMainName = varQual pREL_TOP_HANDLER_Name FSLIT("runMain") runMainKey
+runIOName = varQual pREL_TOP_HANDLER_Name FSLIT("runIO") runMainKey
-- Stuff from GHC.Prim
usOnceTyConName = kindQual FSLIT(".") usOnceTyConKey
-- Class Monad
monadClassName = clsQual pREL_BASE_Name FSLIT("Monad") monadClassKey
-thenMName = varQual pREL_BASE_Name FSLIT(">>=") thenMClassOpKey
+thenMName = varQual pREL_BASE_Name FSLIT(">>") thenMClassOpKey
+bindMName = varQual pREL_BASE_Name FSLIT(">>=") bindMClassOpKey
returnMName = varQual pREL_BASE_Name FSLIT("return") returnMClassOpKey
failMName = varQual pREL_BASE_Name FSLIT("fail") failMClassOpKey
-- IOBase things
ioTyConName = tcQual pREL_IO_BASE_Name FSLIT("IO") ioTyConKey
ioDataConName = dataQual pREL_IO_BASE_Name FSLIT("IO") ioDataConKey
+thenIOName = varQual pREL_IO_BASE_Name FSLIT("thenIO") thenIOIdKey
bindIOName = varQual pREL_IO_BASE_Name FSLIT("bindIO") bindIOIdKey
returnIOName = varQual pREL_IO_BASE_Name FSLIT("returnIO") returnIOIdKey
failIOName = varQual pREL_IO_BASE_Name FSLIT("failIO") failIOIdKey
mutableByteArrayTyConName = tcQual pREL_BYTEARR_Name FSLIT("MutableByteArray") mutableByteArrayTyConKey
-- Foreign objects and weak pointers
-foreignObjTyConName = tcQual fOREIGNOBJ_Name FSLIT("ForeignObj") foreignObjTyConKey
-foreignObjDataConName = dataQual fOREIGNOBJ_Name FSLIT("ForeignObj") foreignObjDataConKey
-foreignPtrTyConName = tcQual fOREIGN_PTR_Name FSLIT("ForeignPtr") foreignPtrTyConKey
-foreignPtrDataConName = dataQual fOREIGN_PTR_Name FSLIT("ForeignPtr") foreignPtrDataConKey
stablePtrTyConName = tcQual pREL_STABLE_Name FSLIT("StablePtr") stablePtrTyConKey
stablePtrDataConName = dataQual pREL_STABLE_Name FSLIT("StablePtr") stablePtrDataConKey
deRefStablePtrName = varQual pREL_STABLE_Name FSLIT("deRefStablePtr") deRefStablePtrIdKey
runSTRepName = varQual pREL_ST_Name FSLIT("runSTRep") runSTRepIdKey
-- The "split" Id for splittable implicit parameters
-splitName = varQual pREL_SPLIT_Name FSLIT("split") splitIdKey
+splitName = varQual gLA_EXTS_Name FSLIT("split") splitIdKey
\end{code}
%************************************************************************
showSpace_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showSpace")
showString_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showString")
showParen_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showParen")
+
readsPrec_RDR = varQual_RDR pREL_READ_Name FSLIT("readsPrec")
+readPrec_RDR = varQual_RDR pREL_READ_Name FSLIT("readPrec")
+readListPrec_RDR = varQual_RDR pREL_READ_Name FSLIT("readListPrec")
readList_RDR = varQual_RDR pREL_READ_Name FSLIT("readList")
-readParen_RDR = varQual_RDR pREL_READ_Name FSLIT("readParen")
-lex_RDR = varQual_RDR pREL_READ_Name FSLIT("lex")
-readList___RDR = varQual_RDR pREL_READ_Name FSLIT("readList__")
+
+readListDefault_RDR = varQual_RDR pREL_READ_Name FSLIT("readListDefault")
+readListPrecDefault_RDR = varQual_RDR pREL_READ_Name FSLIT("readListPrecDefault")
+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")
+
+-- Module ReadPrec
+step_RDR = varQual_RDR rEAD_PREC_Name FSLIT("step")
+reset_RDR = varQual_RDR rEAD_PREC_Name FSLIT("reset")
+alt_RDR = varQual_RDR rEAD_PREC_Name FSLIT("+++")
+prec_RDR = varQual_RDR rEAD_PREC_Name FSLIT("prec")
+
+-- Module Lex
+symbol_RDR = dataQual_RDR lEX_Name FSLIT("Symbol")
+ident_RDR = dataQual_RDR lEX_Name FSLIT("Ident")
+punc_RDR = dataQual_RDR lEX_Name FSLIT("Punc")
+
times_RDR = varQual_RDR pREL_NUM_Name FSLIT("*")
plus_RDR = varQual_RDR pREL_NUM_Name FSLIT("+")
negate_RDR = varQual_RDR pREL_NUM_Name FSLIT("negate")
build_RDR = nameRdrName buildName
enumFromTo_RDR = nameRdrName enumFromToName
returnM_RDR = nameRdrName returnMName
-thenM_RDR = nameRdrName thenMName
+bindM_RDR = nameRdrName bindMName
failM_RDR = nameRdrName failMName
false_RDR = nameRdrName falseDataConName
true_RDR = nameRdrName trueDataConName
integerTyConKey = mkPreludeTyConUnique 22
listTyConKey = mkPreludeTyConUnique 23
foreignObjPrimTyConKey = mkPreludeTyConUnique 24
-foreignObjTyConKey = mkPreludeTyConUnique 25
-foreignPtrTyConKey = mkPreludeTyConUnique 26
weakPrimTyConKey = mkPreludeTyConUnique 27
mutableArrayPrimTyConKey = mkPreludeTyConUnique 28
mutableByteArrayPrimTyConKey = mkPreludeTyConUnique 29
intDataConKey = mkPreludeDataConUnique 6
smallIntegerDataConKey = mkPreludeDataConUnique 7
largeIntegerDataConKey = mkPreludeDataConUnique 8
-foreignObjDataConKey = mkPreludeDataConUnique 9
-foreignPtrDataConKey = mkPreludeDataConUnique 10
nilDataConKey = mkPreludeDataConUnique 11
ratioDataConKey = mkPreludeDataConUnique 12
stablePtrDataConKey = mkPreludeDataConUnique 13
eqStringIdKey = mkPreludeMiscIdUnique 16
noMethodBindingErrorIdKey = mkPreludeMiscIdUnique 17
nonExhaustiveGuardsErrorIdKey = mkPreludeMiscIdUnique 18
-errorCStringIdKey = mkPreludeMiscIdUnique 19
+runtimeErrorIdKey = mkPreludeMiscIdUnique 19
parErrorIdKey = mkPreludeMiscIdUnique 20
parIdKey = mkPreludeMiscIdUnique 21
patErrorIdKey = mkPreludeMiscIdUnique 22
andIdKey = mkPreludeMiscIdUnique 57
orIdKey = mkPreludeMiscIdUnique 58
+thenIOIdKey = mkPreludeMiscIdUnique 59
+lazyIdKey = mkPreludeMiscIdUnique 60
-- Parallel array functions
nullPIdKey = mkPreludeMiscIdUnique 70
geClassOpKey = mkPreludeMiscIdUnique 110
negateClassOpKey = mkPreludeMiscIdUnique 111
failMClassOpKey = mkPreludeMiscIdUnique 112
-thenMClassOpKey = mkPreludeMiscIdUnique 113 -- (>>=)
+bindMClassOpKey = mkPreludeMiscIdUnique 113 -- (>>=)
+thenMClassOpKey = mkPreludeMiscIdUnique 114 -- (>>)
fromEnumClassOpKey = mkPreludeMiscIdUnique 115
returnMClassOpKey = mkPreludeMiscIdUnique 117
toEnumClassOpKey = mkPreludeMiscIdUnique 119
, wordTyConKey
, byteArrayTyConKey
, mutableByteArrayTyConKey
- , foreignObjTyConKey
- , foreignPtrTyConKey
, stablePtrTyConKey
, int8TyConKey
, int16TyConKey
deriving_occ_info
= [ (eqClassKey, [intTyCon_RDR, and_RDR, not_RDR])
- , (ordClassKey, [intTyCon_RDR, compose_RDR, eqTag_RDR])
+ , (ordClassKey, [intTyCon_RDR, compose_RDR, eqTag_RDR, error_RDR])
-- EQ (from Ordering) is needed to force in the constructors
-- as well as the type constructor.
- , (enumClassKey, [intTyCon_RDR, eq_RDR, ge_RDR, and_RDR, map_RDR, plus_RDR, showsPrec_RDR, append_RDR])
+ , (enumClassKey, [intTyCon_RDR, eq_RDR, ge_RDR, and_RDR, map_RDR, plus_RDR,
+ error_RDR, showsPrec_RDR, append_RDR])
-- The last two Enum deps are only used to produce better
-- error msgs for derived toEnum methods.
, (boundedClassKey, [intTyCon_RDR])
, (showClassKey, [intTyCon_RDR, numClass_RDR, ordClass_RDR, compose_RDR, showString_RDR,
showParen_RDR, showSpace_RDR, showList___RDR])
- , (readClassKey, [intTyCon_RDR, numClass_RDR, ordClass_RDR, append_RDR,
- foldr_RDR, build_RDR,
- -- foldr and build required for list comprehension
- -- KSW 2000-06
- lex_RDR, readParen_RDR, readList___RDR, thenM_RDR])
- -- returnM (and the rest of the Monad class decl)
- -- will be forced in as result of depending
- -- on thenM. -- SOF 1/99
- , (ixClassKey, [intTyCon_RDR, numClass_RDR, and_RDR, map_RDR, enumFromTo_RDR,
- foldr_RDR, build_RDR,
+ , (readClassKey, [intTyCon_RDR, numClass_RDR, ordClass_RDR,
+ lexP_RDR, readPrec_RDR,
+ readListDefault_RDR, readListPrecDefault_RDR,
+ step_RDR, parens_RDR, reset_RDR, prec_RDR, alt_RDR, choose_RDR,
+ ident_RDR, -- Pulls in the entire Lex.Lexeme data type
+ bindM_RDR -- Pulls in the entire Monad class decl
+ ] )
+ , (ixClassKey, [intTyCon_RDR, numClass_RDR, and_RDR, map_RDR, enumFromTo_RDR, error_RDR,
+ foldr_RDR, build_RDR,
-- foldr and build required for list comprehension used
-- with single constructor types -- KSW 2000-06
returnM_RDR, failM_RDR])