Closure inspection in GHCi
[ghc-hetmet.git] / compiler / prelude / PrelNames.lhs
index 03a9692..b86f49c 100644 (file)
@@ -60,7 +60,7 @@ import Unique   ( Unique, Uniquable(..), hasKey,
                    mkTupleTyConUnique
                  ) 
 import BasicTypes ( Boxity(..), Arity )
-import Name      ( Name, mkInternalName, mkExternalName, nameModule )
+import Name      ( Name, mkInternalName, mkExternalName )
 import SrcLoc     ( noSrcLoc )
 import FastString
 \end{code}
@@ -186,6 +186,8 @@ basicKnownKeyNames
        otherwiseIdName, 
        plusIntegerName, timesIntegerName,
        eqStringName, assertName, breakpointName, breakpointCondName,
+        breakpointAutoName,  opaqueTyConName, unknownTyConName, 
+        unknown1TyConName, unknown2TyConName, unknown3TyConName,
         assertErrorName, runSTRepName,
        printName, fstName, sndName,
 
@@ -446,9 +448,9 @@ runMainIOName = varQual gHC_TOP_HANDLER FSLIT("runMainIO") runMainKey
 
 orderingTyConName = tcQual   gHC_BASE FSLIT("Ordering") orderingTyConKey
 
-eitherTyConName          = tcQual  dATA_EITHER     FSLIT("Either") eitherTyConKey
-leftDataConName   = conName eitherTyConName FSLIT("Left")   leftDataConKey
-rightDataConName  = conName eitherTyConName FSLIT("Right")  rightDataConKey
+eitherTyConName          = tcQual  dATA_EITHER FSLIT("Either") eitherTyConKey
+leftDataConName   = conName dATA_EITHER FSLIT("Left")   leftDataConKey
+rightDataConName  = conName dATA_EITHER FSLIT("Right")  rightDataConKey
 
 -- Generics
 crossTyConName     = tcQual   gHC_BASE FSLIT(":*:") crossTyConKey
@@ -466,18 +468,18 @@ eqStringName              = varQual gHC_BASE FSLIT("eqString")  eqStringIdKey
 inlineIdName           = varQual gHC_BASE FSLIT("inline") inlineIdKey
 
 -- Base classes (Eq, Ord, Functor)
-eqClassName      = clsQual gHC_BASE FSLIT("Eq")      eqClassKey
-eqName           = methName eqClassName FSLIT("==")   eqClassOpKey
-ordClassName     = clsQual gHC_BASE FSLIT("Ord")     ordClassKey
-geName           = methName ordClassName FSLIT(">=")  geClassOpKey
-functorClassName  = clsQual gHC_BASE FSLIT("Functor") functorClassKey
+eqClassName      = clsQual  gHC_BASE FSLIT("Eq")      eqClassKey
+eqName           = methName gHC_BASE FSLIT("==")      eqClassOpKey
+ordClassName     = clsQual  gHC_BASE FSLIT("Ord")     ordClassKey
+geName           = methName gHC_BASE FSLIT(">=")      geClassOpKey
+functorClassName  = clsQual  gHC_BASE FSLIT("Functor") functorClassKey
 
 -- Class Monad
-monadClassName    = clsQual gHC_BASE FSLIT("Monad")        monadClassKey
-thenMName         = methName monadClassName FSLIT(">>")     thenMClassOpKey
-bindMName         = methName monadClassName FSLIT(">>=")    bindMClassOpKey
-returnMName       = methName monadClassName FSLIT("return") returnMClassOpKey
-failMName         = methName monadClassName FSLIT("fail")   failMClassOpKey
+monadClassName    = clsQual  gHC_BASE FSLIT("Monad")  monadClassKey
+thenMName         = methName gHC_BASE FSLIT(">>")     thenMClassOpKey
+bindMName         = methName gHC_BASE FSLIT(">>=")    bindMClassOpKey
+returnMName       = methName gHC_BASE FSLIT("return") returnMClassOpKey
+failMName         = methName gHC_BASE FSLIT("fail")   failMClassOpKey
 
 -- Random PrelBase functions
 otherwiseIdName   = varQual gHC_BASE FSLIT("otherwise")  otherwiseIdKey
@@ -490,6 +492,13 @@ orName               = varQual gHC_BASE FSLIT("||")          orIdKey
 assertName        = varQual gHC_BASE FSLIT("assert")     assertIdKey
 breakpointName    = varQual gHC_BASE FSLIT("breakpoint") breakpointIdKey
 breakpointCondName= varQual gHC_BASE FSLIT("breakpointCond") breakpointCondIdKey
+breakpointAutoName= varQual gHC_BASE FSLIT("breakpointAuto") breakpointAutoIdKey
+unknownTyConName  = tcQual  gHC_BASE FSLIT("Unknown") unknownTyConKey
+unknown1TyConName = tcQual  gHC_BASE FSLIT("Unknown1") unknown1TyConKey
+unknown2TyConName = tcQual  gHC_BASE FSLIT("Unknown2") unknown2TyConKey
+unknown3TyConName = tcQual  gHC_BASE FSLIT("Unknown3") unknown3TyConKey
+opaqueTyConName   = tcQual  gHC_BASE FSLIT("Opaque")   opaqueTyConKey
+
 breakpointJumpName
     = mkInternalName
         breakpointJumpIdKey
@@ -500,31 +509,36 @@ breakpointCondJumpName
         breakpointCondJumpIdKey
         (mkOccNameFS varName FSLIT("breakpointCondJump"))
         noSrcLoc
+breakpointAutoJumpName
+    = mkInternalName
+        breakpointAutoJumpIdKey
+        (mkOccNameFS varName FSLIT("breakpointAutoJump"))
+        noSrcLoc
 
 -- PrelTup
 fstName                  = varQual dATA_TUP FSLIT("fst") fstIdKey
 sndName                  = varQual dATA_TUP FSLIT("snd") sndIdKey
 
 -- Module PrelNum
-numClassName     = clsQual gHC_NUM FSLIT("Num") numClassKey
-fromIntegerName   = methName numClassName FSLIT("fromInteger") fromIntegerClassOpKey
-minusName        = methName numClassName FSLIT("-") minusClassOpKey
-negateName       = methName numClassName FSLIT("negate") negateClassOpKey
-plusIntegerName   = varQual gHC_NUM FSLIT("plusInteger") plusIntegerIdKey
-timesIntegerName  = varQual gHC_NUM FSLIT("timesInteger") timesIntegerIdKey
-integerTyConName  = tcQual  gHC_NUM FSLIT("Integer") integerTyConKey
-smallIntegerDataConName = conName integerTyConName FSLIT("S#") smallIntegerDataConKey
-largeIntegerDataConName = conName integerTyConName FSLIT("J#") largeIntegerDataConKey
+numClassName     = clsQual  gHC_NUM FSLIT("Num") numClassKey
+fromIntegerName   = methName gHC_NUM FSLIT("fromInteger") fromIntegerClassOpKey
+minusName        = methName gHC_NUM FSLIT("-") minusClassOpKey
+negateName       = methName gHC_NUM FSLIT("negate") negateClassOpKey
+plusIntegerName   = varQual  gHC_NUM FSLIT("plusInteger") plusIntegerIdKey
+timesIntegerName  = varQual  gHC_NUM FSLIT("timesInteger") timesIntegerIdKey
+integerTyConName  = tcQual   gHC_NUM FSLIT("Integer") integerTyConKey
+smallIntegerDataConName = conName gHC_NUM FSLIT("S#") smallIntegerDataConKey
+largeIntegerDataConName = conName gHC_NUM FSLIT("J#") largeIntegerDataConKey
 
 -- PrelReal types and classes
-rationalTyConName   = tcQual  gHC_REAL  FSLIT("Rational") rationalTyConKey
-ratioTyConName     = tcQual  gHC_REAL  FSLIT("Ratio") ratioTyConKey
-ratioDataConName    = conName ratioTyConName FSLIT(":%") ratioDataConKey
-realClassName      = clsQual gHC_REAL  FSLIT("Real") realClassKey
-integralClassName   = clsQual gHC_REAL  FSLIT("Integral") integralClassKey
-realFracClassName   = clsQual gHC_REAL  FSLIT("RealFrac") realFracClassKey
-fractionalClassName = clsQual gHC_REAL  FSLIT("Fractional") fractionalClassKey
-fromRationalName    = methName fractionalClassName  FSLIT("fromRational") fromRationalClassOpKey
+rationalTyConName   = tcQual  gHC_REAL FSLIT("Rational") rationalTyConKey
+ratioTyConName     = tcQual  gHC_REAL FSLIT("Ratio") ratioTyConKey
+ratioDataConName    = conName gHC_REAL FSLIT(":%") ratioDataConKey
+realClassName      = clsQual gHC_REAL FSLIT("Real") realClassKey
+integralClassName   = clsQual gHC_REAL FSLIT("Integral") integralClassKey
+realFracClassName   = clsQual gHC_REAL FSLIT("RealFrac") realFracClassKey
+fractionalClassName = clsQual gHC_REAL FSLIT("Fractional") fractionalClassKey
+fromRationalName    = methName gHC_REAL  FSLIT("fromRational") fromRationalClassOpKey
 
 -- PrelFloat classes
 floatingClassName  = clsQual  gHC_FLOAT FSLIT("Floating") floatingClassKey
@@ -555,10 +569,10 @@ assertErrorName     = varQual gHC_ERR FSLIT("assertError") assertErrorIdKey
 
 -- Enum module (Enum, Bounded)
 enumClassName     = clsQual gHC_ENUM FSLIT("Enum") enumClassKey
-enumFromName      = methName enumClassName FSLIT("enumFrom") enumFromClassOpKey
-enumFromToName    = methName enumClassName FSLIT("enumFromTo") enumFromToClassOpKey
-enumFromThenName   = methName enumClassName FSLIT("enumFromThen") enumFromThenClassOpKey
-enumFromThenToName = methName enumClassName FSLIT("enumFromThenTo") enumFromThenToClassOpKey
+enumFromName      = methName gHC_ENUM FSLIT("enumFrom") enumFromClassOpKey
+enumFromToName    = methName gHC_ENUM FSLIT("enumFromTo") enumFromToClassOpKey
+enumFromThenName   = methName gHC_ENUM FSLIT("enumFromThen") enumFromThenClassOpKey
+enumFromThenToName = methName gHC_ENUM FSLIT("enumFromThenTo") enumFromThenToClassOpKey
 boundedClassName   = clsQual gHC_ENUM FSLIT("Bounded") boundedClassKey
 
 -- List functions
@@ -590,7 +604,7 @@ indexOfPName      = varQual gHC_PARR FSLIT("indexOfP")     indexOfPIdKey
 
 -- IOBase things
 ioTyConName      = tcQual  gHC_IO_BASE FSLIT("IO") ioTyConKey
-ioDataConName     = conName ioTyConName  FSLIT("IO") ioDataConKey
+ioDataConName     = conName gHC_IO_BASE FSLIT("IO") ioDataConKey
 thenIOName       = varQual gHC_IO_BASE FSLIT("thenIO") thenIOIdKey
 bindIOName       = varQual gHC_IO_BASE FSLIT("bindIO") bindIOIdKey
 returnIOName     = varQual gHC_IO_BASE FSLIT("returnIO") returnIOIdKey
@@ -611,7 +625,7 @@ word16TyConName   = tcQual  gHC_WORD FSLIT("Word16") word16TyConKey
 word32TyConName   = tcQual  gHC_WORD FSLIT("Word32") word32TyConKey
 word64TyConName   = tcQual  gHC_WORD FSLIT("Word64") word64TyConKey
 wordTyConName     = tcQual  gHC_WORD FSLIT("Word")   wordTyConKey
-wordDataConName   = conName wordTyConName FSLIT("W#") wordDataConKey
+wordDataConName   = conName gHC_WORD FSLIT("W#") wordDataConKey
 
 -- PrelPtr module
 ptrTyConName     = tcQual   gHC_PTR FSLIT("Ptr") ptrTyConKey
@@ -626,7 +640,7 @@ runSTRepName           = varQual gHC_ST  FSLIT("runSTRep") runSTRepIdKey
 
 -- Recursive-do notation
 monadFixClassName  = clsQual mONAD_FIX FSLIT("MonadFix") monadFixClassKey
-mfixName          = methName monadFixClassName FSLIT("mfix") mfixIdKey
+mfixName          = methName mONAD_FIX FSLIT("mfix") mfixIdKey
 
 -- Arrow notation
 arrAName          = varQual aRROW FSLIT("arr")   arrAIdKey
@@ -666,18 +680,15 @@ tcQual   = mk_known_key_name tcName
 clsQual  = mk_known_key_name clsName
 
 mk_known_key_name space mod str uniq 
-  = mkExternalName uniq mod (mkOccNameFS space str) 
-                  Nothing noSrcLoc
-
-conName :: Name -> FastString -> Unique -> Name
-conName tycon occ uniq
-  = mkExternalName uniq (nameModule tycon) (mkOccNameFS dataName occ) 
-                  (Just tycon) noSrcLoc
-
-methName :: Name -> FastString -> Unique -> Name
-methName cls occ uniq
-  = mkExternalName uniq (nameModule cls) (mkVarOccFS occ) 
-                  (Just cls) noSrcLoc
+  = mkExternalName uniq mod (mkOccNameFS space str) noSrcLoc
+
+conName :: Module -> FastString -> Unique -> Name
+conName mod occ uniq
+  = mkExternalName uniq mod (mkOccNameFS dataName occ) noSrcLoc
+
+methName :: Module -> FastString -> Unique -> Name
+methName mod occ uniq
+  = mkExternalName uniq mod (mkVarOccFS occ) noSrcLoc
 \end{code}
 
 %************************************************************************
@@ -761,6 +772,10 @@ rationalTyConKey                   = mkPreludeTyConUnique 33
 realWorldTyConKey                      = mkPreludeTyConUnique 34
 stablePtrPrimTyConKey                  = mkPreludeTyConUnique 35
 stablePtrTyConKey                      = mkPreludeTyConUnique 36
+
+anyPrimTyConKey                                = mkPreludeTyConUnique 37
+anyPrimTyCon1Key                       = mkPreludeTyConUnique 38
+
 statePrimTyConKey                      = mkPreludeTyConUnique 50
 stableNamePrimTyConKey                 = mkPreludeTyConUnique 51
 stableNameTyConKey                     = mkPreludeTyConUnique 52
@@ -801,7 +816,7 @@ eitherTyConKey                              = mkPreludeTyConUnique 84
 
 -- Super Kinds constructors
 tySuperKindTyConKey                    = mkPreludeTyConUnique 85
-coSuperKindTyConKey                = mkPreludeTyConUnique 86
+coSuperKindTyConKey                    = mkPreludeTyConUnique 86
 
 -- Kind constructors
 liftedTypeKindTyConKey                  = mkPreludeTyConUnique 87
@@ -819,6 +834,12 @@ instCoercionTyConKey                    = mkPreludeTyConUnique 97
 unsafeCoercionTyConKey                  = mkPreludeTyConUnique 98
 
 
+unknownTyConKey                                = mkPreludeTyConUnique 99
+unknown1TyConKey                       = mkPreludeTyConUnique 100
+unknown2TyConKey                       = mkPreludeTyConUnique 101
+unknown3TyConKey                       = mkPreludeTyConUnique 102
+opaqueTyConKey                          = mkPreludeTyConUnique 103
+
 ---------------- Template Haskell -------------------
 --     USES TyConUniques 100-129
 -----------------------------------------------------
@@ -930,10 +951,12 @@ assertErrorIdKey        = mkPreludeMiscIdUnique 61
 
 breakpointIdKey               = mkPreludeMiscIdUnique 62
 breakpointCondIdKey           = mkPreludeMiscIdUnique 63
-breakpointJumpIdKey           = mkPreludeMiscIdUnique 64
-breakpointCondJumpIdKey       = mkPreludeMiscIdUnique 65
+breakpointAutoIdKey           = mkPreludeMiscIdUnique 64
+breakpointJumpIdKey           = mkPreludeMiscIdUnique 65
+breakpointCondJumpIdKey       = mkPreludeMiscIdUnique 66
+breakpointAutoJumpIdKey       = mkPreludeMiscIdUnique 67
 
-inlineIdKey                  = mkPreludeMiscIdUnique 66
+inlineIdKey                  = mkPreludeMiscIdUnique 68
 
 -- Parallel array functions
 nullPIdKey                   = mkPreludeMiscIdUnique 80