summaryrefslogtreecommitdiff
path: root/compiler
diff options
context:
space:
mode:
authorTwan van Laarhoven <twanvl@gmail.com>2008-01-27 00:42:09 +0000
committerTwan van Laarhoven <twanvl@gmail.com>2008-01-27 00:42:09 +0000
commit83e979b3db9acba32973ce065fce6248ee0f59a6 (patch)
tree1062a6b5d6f73d16667d07a242b37e2cc3e513a4 /compiler
parent7c9ef2cc6a623098b34bafa8f79e2ff3e7c834b8 (diff)
downloadhaskell-83e979b3db9acba32973ce065fce6248ee0f59a6.tar.gz
Fixed warnings in hsSyn/HsPat, except for incomplete pattern matches
Diffstat (limited to 'compiler')
-rw-r--r--compiler/hsSyn/HsPat.lhs29
1 files changed, 17 insertions, 12 deletions
diff --git a/compiler/hsSyn/HsPat.lhs b/compiler/hsSyn/HsPat.lhs
index 266cff2aa0..6b294c1c42 100644
--- a/compiler/hsSyn/HsPat.lhs
+++ b/compiler/hsSyn/HsPat.lhs
@@ -5,7 +5,7 @@
\section[PatSyntax]{Abstract Haskell syntax---patterns}
\begin{code}
-{-# OPTIONS -w #-}
+{-# OPTIONS -fno-warn-incomplete-patterns #-}
-- The above warning supression flag is a temporary kludge.
-- While working on this module you are encouraged to remove it and fix
-- any warnings in the module. See
@@ -36,7 +36,6 @@ import {-# SOURCE #-} HsExpr (SyntaxExpr, LHsExpr, pprLExpr)
import HsBinds
import HsLit
import HsTypes
-import HsDoc
import BasicTypes
-- others:
import Coercion
@@ -271,9 +270,11 @@ 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
+pprUserCon :: (Outputable con, OutputableBndr id) => con -> HsConPatDetails id -> SDoc
pprUserCon c (InfixCon p1 p2) = ppr p1 <+> ppr c <+> ppr p2
pprUserCon c details = ppr c <+> pprConArgs details
+pprConArgs :: OutputableBndr id => HsConPatDetails id -> SDoc
pprConArgs (PrefixCon pats) = interppSP pats
pprConArgs (InfixCon p1 p2) = interppSP [p1,p2]
pprConArgs (RecCon rpats) = ppr rpats
@@ -326,7 +327,7 @@ mkCoPat co pat ty
| otherwise = CoPat co pat ty
mkCoPatCoI :: CoercionI -> Pat id -> Type -> Pat id
-mkCoPatCoI IdCo pat ty = pat
+mkCoPatCoI IdCo pat _ = pat
mkCoPatCoI (ACo co) pat ty = mkCoPat (WpCo co) pat ty
\end{code}
@@ -361,37 +362,41 @@ patterns are treated specially, of course.
The 1.3 report defines what ``irrefutable'' and ``failure-free'' patterns are.
\begin{code}
+isWildPat :: Pat id -> Bool
isWildPat (WildPat _) = True
-isWildPat other = False
+isWildPat _ = False
patsAreAllCons :: [Pat id] -> Bool
patsAreAllCons pat_list = all isConPat pat_list
+isConPat :: Pat id -> Bool
isConPat (AsPat _ pat) = isConPat (unLoc pat)
isConPat (ConPatIn {}) = True
isConPat (ConPatOut {}) = True
isConPat (ListPat {}) = True
isConPat (PArrPat {}) = True
isConPat (TuplePat {}) = True
-isConPat other = False
+isConPat _ = False
+isSigPat :: Pat id -> Bool
isSigPat (SigPatIn _ _) = True
isSigPat (SigPatOut _ _) = True
-isSigPat other = False
+isSigPat _ = False
patsAreAllLits :: [Pat id] -> Bool
patsAreAllLits pat_list = all isLitPat pat_list
+isLitPat :: Pat id -> Bool
isLitPat (AsPat _ pat) = isLitPat (unLoc pat)
isLitPat (LitPat _) = True
isLitPat (NPat _ _ _) = True
isLitPat (NPlusKPat _ _ _ _) = True
-isLitPat other = False
+isLitPat _ = False
isBangHsBind :: HsBind id -> Bool
-- In this module because HsPat is above HsBinds in the import graph
-isBangHsBind (PatBind { pat_lhs = L _ (BangPat p) }) = True
-isBangHsBind bind = False
+isBangHsBind (PatBind { pat_lhs = L _ (BangPat _) }) = True
+isBangHsBind _ = False
isIrrefutableHsPat :: LPat id -> Bool
-- (isIrrefutableHsPat p) is true if matching against p cannot fail,
@@ -410,7 +415,7 @@ isIrrefutableHsPat pat
go1 (WildPat _) = True
go1 (VarPat _) = True
go1 (VarPatOut _ _) = True
- go1 (LazyPat pat) = True
+ go1 (LazyPat _) = True
go1 (BangPat pat) = go pat
go1 (CoPat _ pat _) = go1 pat
go1 (ParPat pat) = go pat
@@ -419,8 +424,8 @@ isIrrefutableHsPat pat
go1 (SigPatIn pat _) = go pat
go1 (SigPatOut pat _) = go pat
go1 (TuplePat pats _ _) = all go pats
- go1 (ListPat pats _) = False
- go1 (PArrPat pats _) = False -- ?
+ go1 (ListPat _ _) = False
+ go1 (PArrPat _ _) = False -- ?
go1 (ConPatIn _ _) = False -- Conservative
go1 (ConPatOut{ pat_con = L _ con, pat_args = details })