X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FhsSyn%2FHsPat.lhs;h=25a350b43a9df9d24734c3757fb6830624015949;hb=9ba922ee06b048774d7a82964867ff768a78126e;hp=1bf0aa828148bd7cf020f820e883c7a8bf2465e7;hpb=d2ce0f52d42edf32bb9f13796e6ba6edba8bd516;p=ghc-hetmet.git diff --git a/compiler/hsSyn/HsPat.lhs b/compiler/hsSyn/HsPat.lhs index 1bf0aa8..25a350b 100644 --- a/compiler/hsSyn/HsPat.lhs +++ b/compiler/hsSyn/HsPat.lhs @@ -47,6 +47,7 @@ import SrcLoc import FastString -- libraries: import Data.Data hiding (TyCon) +import Data.Maybe \end{code} @@ -411,7 +412,9 @@ isIrrefutableHsPat pat go1 (ConPatIn {}) = False -- Conservative go1 (ConPatOut{ pat_con = L _ con, pat_args = details }) - = isProductTyCon (dataConTyCon con) + = isJust (tyConSingleDataCon_maybe (dataConTyCon con)) + -- NB: tyConSingleDataCon_maybe, *not* isProductTyCon, because + -- the latter is false of existentials. See Trac #4439 && all go (hsConPatArgs details) go1 (LitPat {}) = False