FIX read040: patterns with type sig on LHS of do-binding
authorsimonpj@microsoft.com <unknown>
Thu, 21 Jun 2007 14:37:21 +0000 (14:37 +0000)
committersimonpj@microsoft.com <unknown>
Thu, 21 Jun 2007 14:37:21 +0000 (14:37 +0000)
f () = do { x :: Bool <- return True; ... }

For some reason the production for 'pat' required 'infixexp' on the
LHS of a do-notation binding.  This patch makes it an 'exp', which
thereby allows an expression with a type sig.

Happily, there are no new shift-reduce errors, so I don't think this
will break anything else.

compiler/parser/Parser.y.pp

index 82f6474..b31e025 100644 (file)
@@ -1494,7 +1494,7 @@ gdpat     :: { LGRHS RdrName }
 -- Bangs inside are parsed as infix operator applications, so that
 -- we parse them right when bang-patterns are off
 pat     :: { LPat RdrName }
-pat    : infixexp              {% checkPattern $1 }
+pat    :  exp                  {% checkPattern $1 }
        | '!' aexp              {% checkPattern (LL (SectionR (L1 (HsVar bang_RDR)) $2)) }
 
 apat   :: { LPat RdrName }