Remove the unused HsExpr constructor DictPat
[ghc-hetmet.git] / compiler / hsSyn / HsPat.lhs
index ea59e88..42da265 100644 (file)
@@ -50,6 +50,9 @@ type LPat id = Located (Pat id)
 data Pat id
   =    ------------ Simple patterns ---------------
     WildPat    PostTcType              -- Wild card
+       -- The sole reason for a type on a WildPat is to
+       -- support hsPatType :: Pat Id -> Type
+
   | VarPat     id                      -- Variable
   | VarPatOut  id (DictBinds id)       -- Used only for overloaded Ids; the 
                                        -- bindings give its overloaded instances
@@ -122,16 +125,11 @@ data Pat id
   | SigPatOut      (LPat id)           -- Pattern with a type signature
                    Type
 
-       ------------ Dictionary patterns (translation only) ---------------
-  | DictPat        -- Used when destructing Dictionaries with an explicit case
-                   [id]                -- Superclass dicts
-                   [id]                -- Methods
-
        ------------ Pattern coercions (translation only) ---------------
   | CoPat      HsWrapper               -- If co::t1 -> t2, p::t2, 
                                        -- then (CoPat co p) :: t1
                (Pat id)                -- Why not LPat?  Ans: existing locn will do
-               Type
+               Type                    -- Type of whole pattern, t1
        -- During desugaring a (CoPat co pat) turns into a cast with 'co' on 
        -- the scrutinee, followed by a match on 'pat'
 \end{code}
@@ -208,9 +206,6 @@ pprPat (TypePat ty)       = ptext SLIT("{|") <> ppr ty <> ptext SLIT("|}")
 pprPat (CoPat co pat _)              = parens (pprHsWrapper (ppr pat) co)
 pprPat (SigPatIn pat ty)      = ppr pat <+> dcolon <+> ppr ty
 pprPat (SigPatOut pat ty)     = ppr pat <+> dcolon <+> ppr ty
-pprPat (DictPat ds ms)       = parens (sep [ptext SLIT("{-dict-}"),
-                                            brackets (interpp'SP ds),
-                                            brackets (interpp'SP ms)])
 
 pprUserCon c (InfixCon p1 p2) = ppr p1 <+> ppr c <+> ppr p2
 pprUserCon c details          = ppr c <+> pprConArgs details
@@ -302,7 +297,6 @@ isConPat (ConPatOut {})  = True
 isConPat (ListPat {})   = True
 isConPat (PArrPat {})   = True
 isConPat (TuplePat {})  = True
-isConPat (DictPat ds ms) = (length ds + length ms) > 1
 isConPat other          = False
 
 isSigPat (SigPatIn _ _)  = True
@@ -356,6 +350,5 @@ isIrrefutableHsPat pat
     go1 (NPlusKPat _ _ _ _) = False
 
     go1 (TypePat _)   = panic "isIrrefutableHsPat: type pattern"
-    go1 (DictPat _ _) = panic "isIrrefutableHsPat: type pattern"
 \end{code}