[project @ 2000-08-09 15:19:58 by rrt]
[ghc-hetmet.git] / ghc / compiler / prelude / TysPrim.lhs
index 694492e..4be0716 100644 (file)
@@ -10,7 +10,7 @@ types and operations.''
 module TysPrim(
        alphaTyVars, betaTyVars, alphaTyVar, betaTyVar, gammaTyVar, deltaTyVar,
        alphaTy, betaTy, gammaTy, deltaTy,
-       openAlphaTyVar, openAlphaTyVars,
+       openAlphaTy, openAlphaTyVar, openAlphaTyVars,
 
        charPrimTyCon,          charPrimTy,
        intPrimTyCon,           intPrimTy,
@@ -31,6 +31,7 @@ module TysPrim(
        mVarPrimTyCon,                  mkMVarPrimTy,   
        stablePtrPrimTyCon,             mkStablePtrPrimTy,
        stableNamePrimTyCon,            mkStableNamePrimTy,
+       bcoPrimTyCon,                   bcoPrimTy,
        weakPrimTyCon,                  mkWeakPrimTy,
        foreignObjPrimTyCon,            foreignObjPrimTy,
        threadIdPrimTyCon,              threadIdPrimTy,
@@ -50,10 +51,10 @@ import Name         ( mkWiredInTyConName )
 import PrimRep         ( PrimRep(..), isFollowableRep )
 import TyCon           ( mkPrimTyCon, TyCon, ArgVrcs )
 import Type            ( Type, 
-                         mkTyConApp, mkTyConTy, mkTyVarTys,
+                         mkTyConApp, mkTyConTy, mkTyVarTys, mkTyVarTy,
                          unboxedTypeKind, boxedTypeKind, openTypeKind, mkArrowKinds
                        )
-import PrelMods                ( pREL_GHC )
+import PrelNames       ( pREL_GHC )
 import Outputable
 import Unique
 \end{code}
@@ -81,6 +82,8 @@ openAlphaTyVars :: [TyVar]
 openAlphaTyVars = [ mkSysTyVar u openTypeKind
                  | u <- map mkAlphaTyVarUnique [2..] ]
 
+openAlphaTy = mkTyVarTy openAlphaTyVar
+
 vrcPos,vrcZero :: (Bool,Bool)
 vrcPos  = (True,False)
 vrcZero = (False,False)
@@ -268,6 +271,17 @@ foreignObjPrimTyCon = pcPrimTyCon foreignObjPrimTyConKey SLIT("ForeignObj#") 0 [
   
 %************************************************************************
 %*                                                                     *
+\subsection[TysPrim-BCOs]{The ``bytecode object'' type}
+%*                                                                     *
+%************************************************************************
+
+\begin{code}
+bcoPrimTy    = mkTyConTy bcoPrimTyCon
+bcoPrimTyCon = pcPrimTyCon bcoPrimTyConKey SLIT("BCO#") 0 [] BCORep
+\end{code}
+  
+%************************************************************************
+%*                                                                     *
 \subsection[TysPrim-Weak]{The ``weak pointer'' type}
 %*                                                                     *
 %************************************************************************
@@ -310,6 +324,7 @@ primitive TyCon for a given PrimRep.
 
 \begin{code}
 primRepTyCon CharRep   = charPrimTyCon
+primRepTyCon Int8Rep   = charPrimTyCon
 primRepTyCon IntRep    = intPrimTyCon
 primRepTyCon WordRep   = wordPrimTyCon
 primRepTyCon Int64Rep  = int64PrimTyCon