[project @ 2006-01-06 16:30:17 by simonmar]
[ghc-hetmet.git] / ghc / compiler / prelude / TysWiredIn.lhs
index eb8124f..ceb4df5 100644 (file)
@@ -21,9 +21,9 @@ module TysWiredIn (
        charTy, stringTy, charTyConName,
 
        
-       doubleTyCon, doubleDataCon, doubleTy,
+       doubleTyCon, doubleDataCon, doubleTy, doubleTyConName, 
        
-       floatTyCon, floatDataCon, floatTy,
+       floatTyCon, floatDataCon, floatTy, floatTyConName,
 
        intTyCon, intDataCon, intTyCon_RDR, intDataCon_RDR, intTyConName,
        intTy,
@@ -62,22 +62,21 @@ import Module               ( Module )
 import RdrName         ( nameRdrName )
 import Name            ( Name, BuiltInSyntax(..), nameUnique, nameOccName, 
                          nameModule, mkWiredInName )
-import OccName         ( mkOccFS, tcName, dataName, mkTupleOcc, mkDataConWorkerOcc )
+import OccName         ( mkOccNameFS, tcName, dataName, mkTupleOcc,
+                         mkDataConWorkerOcc )
 import DataCon         ( DataCon, mkDataCon, dataConWorkId, dataConSourceArity )
 import Var             ( TyVar, tyVarKind )
 import TyCon           ( TyCon, AlgTyConRhs(DataTyCon), tyConDataCons,
-                         mkTupleTyCon, mkAlgTyCon, tyConName
-                       )
+                         mkTupleTyCon, mkAlgTyCon, tyConName )
 
-import BasicTypes      ( Arity, RecFlag(..), Boxity(..), isBoxed, StrictnessMark(..),
-                         Fixity(..), FixityDirection(..), defaultFixity )
+import BasicTypes      ( Arity, RecFlag(..), Boxity(..), isBoxed,
+                         StrictnessMark(..) )
 
-import Type            ( Type, mkTyConTy, mkTyConApp, mkTyVarTy, mkTyVarTys, 
-                         ThetaType, TyThing(..) )
+import Type            ( Type, mkTyConTy, mkTyConApp, mkTyVarTy, mkTyVarTys,
+                         TyThing(..) )
 import Kind            ( mkArrowKinds, liftedTypeKind, ubxTupleKind )
 import Unique          ( incrUnique, mkTupleTyConUnique,
                          mkTupleDataConUnique, mkPArrDataConUnique )
-import PrelNames
 import Array
 import FastString
 import Outputable
@@ -117,14 +116,14 @@ wiredInTyCons = [ unitTyCon       -- Not treated like other tuples, because
 \begin{code}
 mkWiredInTyConName :: BuiltInSyntax -> Module -> FastString -> Unique -> TyCon -> Name
 mkWiredInTyConName built_in mod fs uniq tycon
-  = mkWiredInName mod (mkOccFS tcName fs) uniq
+  = mkWiredInName mod (mkOccNameFS tcName fs) uniq
                  Nothing               -- No parent object
                  (ATyCon tycon)        -- Relevant TyCon
                  built_in
 
 mkWiredInDataConName :: BuiltInSyntax -> Module -> FastString -> Unique -> DataCon -> Name -> Name
 mkWiredInDataConName built_in mod fs uniq datacon parent
-  = mkWiredInName mod (mkOccFS dataName fs) uniq
+  = mkWiredInName mod (mkOccNameFS dataName fs) uniq
                  (Just parent)         -- Name of parent TyCon
                  (ADataCon datacon)    -- Relevant DataCon
                  built_in
@@ -177,10 +176,10 @@ pcTyCon is_enum is_rec name tyvars argvrcs cons
     tycon = mkAlgTyCon name
                (mkArrowKinds (map tyVarKind tyvars) liftedTypeKind)
                 tyvars
-                []              -- No context
                 argvrcs
-                (DataTyCon cons is_enum)
-               []              -- No record selectors
+                []             -- No stupid theta
+               (DataTyCon cons is_enum)
+               []              -- No record selectors
                 is_rec
                True            -- All the wired-in tycons have generics
 
@@ -198,11 +197,12 @@ pcDataConWithFixity :: Bool -> Name -> [TyVar] -> [Type] -> TyCon -> DataCon
 pcDataConWithFixity declared_infix dc_name tyvars arg_tys tycon
   = data_con
   where
-    data_con = mkDataCon dc_name declared_infix
+    data_con = mkDataCon dc_name declared_infix True {- Vanilla -}
                 (map (const NotMarkedStrict) arg_tys)
                 [{- No labelled fields -}]
-                tyvars [] [] [] arg_tys tycon 
+                tyvars [] [] arg_tys tycon (mkTyVarTys tyvars)
                (mkDataConIds bogus_wrap_name wrk_name data_con)
+               
 
     mod      = nameModule dc_name
     wrk_occ  = mkDataConWorkerOcc (nameOccName dc_name)
@@ -487,7 +487,7 @@ mkPArrTy ty  = mkTyConApp parrTyCon [ty]
 
 -- represents the type constructor of parallel arrays
 --
--- * this must match the definition in `PrelPArr'
+--  * this must match the definition in `PrelPArr'
 --
 -- NB: Although the constructor is given here, it will not be accessible in
 --     user code as it is not in the environment of any compiled module except
@@ -513,7 +513,7 @@ isPArrTyCon tc  = tyConName tc == parrTyConName
 
 -- fake array constructors
 --
--- * these constructors are never really used to represent array values;
+--  * these constructors are never really used to represent array values;
 --   however, they are very convenient during desugaring (and, in particular,
 --   in the pattern matching compiler) to treat array pattern just like
 --   yet another constructor pattern
@@ -537,7 +537,7 @@ mkPArrFakeCon arity  = data_con
        tyvar     = head alphaTyVars
        tyvarTys  = replicate arity $ mkTyVarTy tyvar
         nameStr   = mkFastString ("MkPArr" ++ show arity)
-       name      = mkWiredInName pREL_PARR (mkOccFS dataName nameStr) uniq
+       name      = mkWiredInName pREL_PARR (mkOccNameFS dataName nameStr) uniq
                                  Nothing (ADataCon data_con) UserSyntax
        uniq      = mkPArrDataConUnique arity