[project @ 2000-09-28 15:15:48 by simonpj]
authorsimonpj <unknown>
Thu, 28 Sep 2000 15:15:48 +0000 (15:15 +0000)
committersimonpj <unknown>
Thu, 28 Sep 2000 15:15:48 +0000 (15:15 +0000)
Wibbles

ghc/compiler/hsSyn/HsTypes.lhs
ghc/compiler/parser/ParseUtil.lhs
ghc/compiler/typecheck/TcModule.lhs
ghc/compiler/types/TyCon.lhs
ghc/compiler/types/Type.lhs

index 06ba30d..14157d7 100644 (file)
@@ -30,7 +30,7 @@ import Type           ( Type, Kind, PredType(..), UsageAnn(..), ClassContext,
                          getTyVar_maybe, splitSigmaTy, unUsgTy, boxedTypeKind
                        )
 import TypeRep         ( Type(..), TyNote(..) )        -- toHsType sees the representation
-import TyCon           ( isTupleTyCon, tupleTyConBoxity, tyConArity, tyConClass_maybe )
+import TyCon           ( isTupleTyCon, tupleTyConBoxity, tyConArity )
 import RdrName         ( RdrName )
 import Name            ( toRdrName )
 import OccName         ( NameSpace )
index 006456c..49c0376 100644 (file)
@@ -199,9 +199,8 @@ checkPat e [] = case e of
        ExplicitList es    -> mapP (\e -> checkPat e []) es `thenP` \ps ->
                              returnP (ListPatIn ps)
 
-       ExplicitTuple es Boxed -> mapP (\e -> checkPat e []) es `thenP` \ps ->
-                                 returnP (TuplePatIn ps Boxed)
-               -- Unboxed tuples are illegal in patterns
+       ExplicitTuple es b -> mapP (\e -> checkPat e []) es `thenP` \ps ->
+                             returnP (TuplePatIn ps b)
 
        RecordCon c fs     -> mapP checkPatField fs `thenP` \fs ->
                              returnP (RecPatIn c fs)
index 03f4fce..1478dc9 100644 (file)
@@ -48,7 +48,7 @@ import Name           ( nameOccName, isLocallyDefined, isGlobalName,
                          toRdrName, nameEnvElts, 
                        )
 import OccName         ( isSysOcc )
-import TyCon           ( TyCon, tyConClass_maybe )
+import TyCon           ( TyCon, isClassTyCon )
 import Class           ( Class )
 import PrelNames       ( mAIN_Name, mainKey )
 import UniqSupply       ( UniqSupply )
@@ -162,7 +162,7 @@ tcModule rn_name_supply fixities
            local_classes = filter isLocallyDefined classes
            local_tycons  = [ tc | tc <- tycons,
                                   isLocallyDefined tc,
-                                  Nothing <- [tyConClass_maybe tc]
+                                  not (isClassTyCon tc)
                            ]
                                -- For local_tycons, filter out the ones derived from classes
                                -- Otherwise the latter show up in interface files
index 9692a9a..b878694 100644 (file)
@@ -34,7 +34,7 @@ module TyCon(
        tyConTheta,
        tyConPrimRep,
        tyConArity,
-       tyConClass_maybe,
+       isClassTyCon,
        getSynTyConDefn,
 
         maybeTyConSingleCon,
@@ -110,10 +110,7 @@ data TyCon
        algTyConRec     :: RecFlag,             -- Tells whether the data type is part of 
                                                -- a mutually-recursive group or not
 
-       algTyConClass_maybe :: Maybe Class      -- Nothing for ordinary types; 
-                                               -- Just c for the type constructor
-                                               -- for dictionaries of class c.
-
+       algTyConClass :: Bool           -- True if this tycon comes from a class declaration
     }
 
   | PrimTyCon {                -- Primitive types; cannot be defined in Haskell
@@ -232,7 +229,7 @@ mkAlgTyCon name kind tyvars theta argvrcs cons ncons derivs flavour rec
        dataCons                = cons, 
        noOfDataCons            = ncons,
        algTyConDerivings       = derivs,
-       algTyConClass_maybe     = Nothing,
+       algTyConClass           = False,
        algTyConFlavour         = flavour,
        algTyConRec             = rec
     }
@@ -249,7 +246,7 @@ mkClassTyCon name kind tyvars argvrcs con clas flavour
        dataCons                = [con],
        noOfDataCons            = 1,
        algTyConDerivings       = [],
-       algTyConClass_maybe     = Just clas,
+       algTyConClass           = True,
        algTyConFlavour         = flavour,
        algTyConRec             = NonRecursive
     }
@@ -429,9 +426,9 @@ maybeTyConSingleCon tc = pprPanic "maybeTyConSingleCon: unexpected tycon " $
 \end{code}
 
 \begin{code}
-tyConClass_maybe :: TyCon -> Maybe Class
-tyConClass_maybe (AlgTyCon {algTyConClass_maybe = maybe_cls}) = maybe_cls
-tyConClass_maybe other_tycon                                 = Nothing
+isClassTyCon :: TyCon -> Bool
+isClassTyCon (AlgTyCon {algTyConClass = is_class_tycon}) = is_class_tycon
+isClassTyCon other_tycon                                = False
 \end{code}
 
 
index 1b8d996..aad3228 100644 (file)
@@ -98,7 +98,7 @@ import TyCon  ( TyCon,
                  isFunTyCon, isDataTyCon, isNewTyCon, newTyConRep,
                  isAlgTyCon, isSynTyCon, tyConArity,
                  tyConKind, tyConDataCons, getSynTyConDefn,
-                 tyConPrimRep, tyConClass_maybe
+                 tyConPrimRep
                )
 
 -- others