From: simonpj@microsoft.com Date: Thu, 27 Jul 2006 15:50:09 +0000 (+0000) Subject: Lazy patterns are like wild-cards for overlap warnings X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=commitdiff_plain;h=9ebd6baeb3955a9f3daa9b57a3d1b8f3b328893d Lazy patterns are like wild-cards for overlap warnings MERGE TO STABLE Fixes Trac #827 Test is should_compiler/ds058 --- diff --git a/compiler/deSugar/Check.lhs b/compiler/deSugar/Check.lhs index 9aac5ce..097a008 100644 --- a/compiler/deSugar/Check.lhs +++ b/compiler/deSugar/Check.lhs @@ -623,7 +623,8 @@ simplify_pat pat@(WildPat gt) = pat simplify_pat (VarPat id) = WildPat (idType id) simplify_pat (VarPatOut id _) = WildPat (idType id) -- Ignore the bindings simplify_pat (ParPat p) = unLoc (simplify_lpat p) -simplify_pat (LazyPat p) = unLoc (simplify_lpat p) +simplify_pat (LazyPat p) = WildPat (hsPatType p) -- For overlap and exhaustiveness checking + -- purposes, a ~pat is like a wildcard simplify_pat (BangPat p) = unLoc (simplify_lpat p) simplify_pat (AsPat id p) = unLoc (simplify_lpat p) simplify_pat (SigPatOut p _) = unLoc (simplify_lpat p) -- I'm not sure this is right