[project @ 2002-11-19 14:16:43 by simonmar]
[ghc-hetmet.git] / ghc / compiler / prelude / TysWiredIn.lhs
index 872681e..5b6754e 100644 (file)
@@ -53,7 +53,7 @@ module TysWiredIn (
        -- tuples
        mkTupleTy,
        tupleTyCon, tupleCon, 
-       unitTyCon, unitDataConId, pairTyCon, 
+       unitTyCon, unitDataCon, unitDataConId, pairTyCon, 
        unboxedSingletonTyCon, unboxedSingletonDataCon,
        unboxedPairTyCon, unboxedPairDataCon,
 
@@ -87,11 +87,10 @@ import TysPrim
 
 -- others:
 import Constants       ( mAX_TUPLE_SIZE )
-import Module          ( mkPrelModule )
-import Name            ( Name, nameRdrName, nameUnique, nameOccName, 
+import Module          ( mkBasePkgModule )
+import Name            ( Name, nameUnique, nameOccName, 
                          nameModule, mkWiredInName )
 import OccName         ( mkOccFS, tcName, dataName, mkWorkerOcc, mkGenOcc1, mkGenOcc2 )
-import RdrName         ( rdrNameOcc )
 import DataCon         ( DataCon, mkDataCon, dataConWorkId, dataConSourceArity )
 import Var             ( TyVar, tyVarKind )
 import TyCon           ( TyCon, AlgTyConFlavour(..), DataConDetails(..), tyConDataCons,
@@ -107,6 +106,7 @@ import Unique               ( incrUnique, mkTupleTyConUnique,
                          mkTupleDataConUnique, mkPArrDataConUnique )
 import PrelNames
 import Array
+import FastString
 
 alpha_tyvar      = [alphaTyVar]
 alpha_ty         = [alphaTy]
@@ -120,6 +120,9 @@ alpha_beta_tyvars = [alphaTyVar, betaTyVar]
 %*                                                                     *
 %************************************************************************
 
+If you change which things are wired in, make sure you change their
+names in PrelNames, so they use wTcQual, wDataQual, etc
+
 \begin{code}
 wiredInTyCons :: [TyCon]
 wiredInTyCons = data_tycons ++ tuple_tycons ++ unboxed_tuple_tycons
@@ -142,7 +145,6 @@ data_tycons = genericTyCons ++
 genericTyCons :: [TyCon]
 genericTyCons = [ plusTyCon, crossTyCon, genUnitTyCon ]
 
-
 tuple_tycons = unitTyCon : [tupleTyCon Boxed   i | i <- [2..mAX_TUPLE_SIZE] ]
 unboxed_tuple_tycons     = [tupleTyCon Unboxed i | i <- [1..mAX_TUPLE_SIZE] ]
 \end{code}
@@ -202,8 +204,7 @@ pcDataCon name tyvars context arg_tys tycon
                 [ {- no labelled fields -} ]
                 tyvars context [] [] arg_tys tycon work_id wrap_id
 
-    wrap_rdr  = nameRdrName name
-    wrap_occ  = rdrNameOcc wrap_rdr
+    wrap_occ  = nameOccName name
 
     mod       = nameModule name
     wrap_id   = mkDataConWrapId data_con
@@ -254,11 +255,12 @@ mk_tuple boxity arity = (tycon, tuple_con)
        name      = mkWiredInName mod (mkOccFS dataName name_str) dc_uniq
        tc_uniq   = mkTupleTyConUnique   boxity arity
        dc_uniq   = mkTupleDataConUnique boxity arity
-       mod       = mkPrelModule mod_name
+       mod       = mkBasePkgModule mod_name
        gen_info  = mk_tc_gen_info mod tc_uniq tc_name tycon
 
 unitTyCon     = tupleTyCon Boxed 0
-unitDataConId = dataConWorkId (head (tyConDataCons unitTyCon))
+unitDataCon   = head (tyConDataCons unitTyCon)
+unitDataConId = dataConWorkId unitDataCon
 
 pairTyCon = tupleTyCon Boxed 2
 
@@ -359,26 +361,6 @@ stablePtrTyCon
            alpha_tyvar [] [mkStablePtrPrimTy alphaTy] stablePtrTyCon
 \end{code}
 
-\begin{code}
-foreignObjTyCon
-  = pcNonRecDataTyCon foreignObjTyConName
-       [] [] [foreignObjDataCon]
-  where
-    foreignObjDataCon
-      = pcDataCon foreignObjDataConName
-           [] [] [foreignObjPrimTy] foreignObjTyCon
-\end{code}
-
-\begin{code}
-foreignPtrTyCon
-  = pcNonRecDataTyCon foreignPtrTyConName
-       alpha_tyvar  [(True,False)] [foreignPtrDataCon]
-  where
-    foreignPtrDataCon
-      = pcDataCon foreignPtrDataConName
-           alpha_tyvar [] [foreignObjPrimTy] foreignPtrTyCon
-\end{code}
-
 %************************************************************************
 %*                                                                     *
 \subsection[TysWiredIn-Integer]{@Integer@ and its related ``pairing'' types}
@@ -626,10 +608,10 @@ mkPArrFakeCon arity  = pcDataCon name [tyvar] [] tyvarTys parrTyCon
   where
        tyvar     = head alphaTyVars
        tyvarTys  = replicate arity $ mkTyVarTy tyvar
-        nameStr   = _PK_ ("MkPArr" ++ show arity)
+        nameStr   = mkFastString ("MkPArr" ++ show arity)
        name      = mkWiredInName mod (mkOccFS dataName nameStr) uniq
        uniq      = mkPArrDataConUnique arity
-       mod       = mkPrelModule pREL_PARR_Name
+       mod       = mkBasePkgModule pREL_PARR_Name
 
 -- checks whether a data constructor is a fake constructor for parallel arrays
 --