X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2FhsSyn%2FHsPat.lhs;h=e87a6a27b446ba774fc223b3923dcb6fceffb5d8;hp=3df0160ae4fa636d5a79016fad740f8bb026f859;hb=a1895147d4d0480f65535c99488ba25873e97bff;hpb=cf924c1549880f9ada192d24342dc610dea1d727 diff --git a/compiler/hsSyn/HsPat.lhs b/compiler/hsSyn/HsPat.lhs index 3df0160..e87a6a2 100644 --- a/compiler/hsSyn/HsPat.lhs +++ b/compiler/hsSyn/HsPat.lhs @@ -369,36 +369,33 @@ patterns are treated specially, of course. The 1.3 report defines what ``irrefutable'' and ``failure-free'' patterns are. \begin{code} -hasViewPat :: Pat id -> Bool -hasViewPat p = hasViewPat' (L undefined p) - -hasViewPat' :: LPat id -> Bool -hasViewPat' (L _ p) = go p where - go (WildPat _) = False - go (VarPat _) = False - go (VarPatOut _ _) = False - go (LazyPat p) = hasViewPat' p - go (AsPat _ p) = hasViewPat' p - go (ParPat p) = hasViewPat' p - go (BangPat p) = hasViewPat' p - go (ListPat p _) = any hasViewPat' p - go (TuplePat p _ _) = any hasViewPat' p - go (PArrPat p _) = any hasViewPat' p - go (ConPatIn _ p) = go' p +hasViewPat :: LPat id -> Bool +hasViewPat (L _ p) = go p where + go (WildPat _) = False + go (VarPat _) = False + go (VarPatOut _ _) = False + go (LazyPat p) = hasViewPat p + go (AsPat _ p) = hasViewPat p + go (ParPat p) = hasViewPat p + go (BangPat p) = hasViewPat p + go (ListPat p _) = any hasViewPat p + go (TuplePat p _ _) = any hasViewPat p + go (PArrPat p _) = any hasViewPat p + go (ConPatIn _ p) = go' p go (ConPatOut _ _ _ _ p _) = go' p - go (ViewPat _ _ _) = True - go (QuasiQuotePat _) = False - go (LitPat _) = False - go (NPat _ _ _) = False - go (NPlusKPat _ _ _ _) = False - go (TypePat _) = False - go (SigPatIn p _) = hasViewPat' p - go (SigPatOut p _) = hasViewPat' p - go (CoPat _ _ _) = False + go (ViewPat _ _ _) = True + go (QuasiQuotePat _) = False + go (LitPat _) = False + go (NPat _ _ _) = False + go (NPlusKPat _ _ _ _) = False + go (TypePat _) = False + go (SigPatIn p _) = hasViewPat p + go (SigPatOut p _) = hasViewPat p + go (CoPat _ _ _) = False go' p = case p of - PrefixCon ps -> any hasViewPat' ps - RecCon (HsRecFields fs _) -> any (hasViewPat' . hsRecFieldArg) fs - InfixCon p1 p2 -> hasViewPat' p1 || hasViewPat' p2 + PrefixCon ps -> any hasViewPat ps + RecCon (HsRecFields fs _) -> any (hasViewPat . hsRecFieldArg) fs + InfixCon p1 p2 -> hasViewPat p1 || hasViewPat p2 isWildPat :: Pat id -> Bool isWildPat (WildPat _) = True