Add missing (error) case in isIrrefutablePat
authorsimonpj@microsoft.com <unknown>
Mon, 28 Jan 2008 21:34:29 +0000 (21:34 +0000)
committersimonpj@microsoft.com <unknown>
Mon, 28 Jan 2008 21:34:29 +0000 (21:34 +0000)
compiler/hsSyn/HsPat.lhs

index 6b294c1..53a8bc0 100644 (file)
@@ -398,7 +398,7 @@ isBangHsBind :: HsBind id -> Bool
 isBangHsBind (PatBind { pat_lhs = L _ (BangPat _) }) = True
 isBangHsBind _                                       = False
 
-isIrrefutableHsPat :: LPat id -> Bool
+isIrrefutableHsPat :: OutputableBndr id => LPat id -> Bool
 -- (isIrrefutableHsPat p) is true if matching against p cannot fail,
 -- in the sense of falling through to the next pattern.
 --     (NB: this is not quite the same as the (silly) defn
@@ -436,6 +436,10 @@ isIrrefutableHsPat pat
     go1 (NPat _ _ _)      = False
     go1 (NPlusKPat _ _ _ _) = False
 
-    go1 (TypePat _)   = panic "isIrrefutableHsPat: type pattern"
+    go1 (QuasiQuotePat {}) = urk pat   -- Gotten rid of by renamer, before
+                                       -- isIrrefutablePat is called
+    go1 (TypePat {})       = urk pat
+
+    urk pat = pprPanic "isIrrefutableHsPat:" (ppr pat)
 \end{code}