Commit 64557b45 authored by simonpj@microsoft.com's avatar simonpj@microsoft.com
Browse files

Warn about top-level bangs (Trac #4477)

A simple refactoring in the parser
parent 3b2b4836
......@@ -1209,10 +1209,15 @@ docdecld :: { LDocDecl }
decl :: { Located (OrdList (LHsDecl RdrName)) }
: sigdecl { $1 }
| '!' aexp rhs {% do { pat <- checkPattern $2;
return (LL $ unitOL $ LL $ ValD (
PatBind (LL $ BangPat pat) (unLoc $3)
placeHolderType placeHolderNames)) } }
| '!' aexp rhs {% do { let { e = LL (SectionR (LL (HsVar bang_RDR)) $2) };
pat <- checkPattern e;
return $ LL $ unitOL $ LL $ ValD $
PatBind pat (unLoc $3)
placeHolderType placeHolderNames } }
-- Turn it all into an expression so that
-- checkPattern can check that bangs are enabled
| infixexp opt_sig rhs {% do { r <- checkValDef $1 $2 $3;
let { l = comb2 $1 $> };
return $! (sL l (unitOL $! (sL l $ ValD r))) } }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment