Consolidate treatment of strictness in parser
Currently GHC's treatment of binding strictness in the Haskell parser and AST is the result of a long, winding evolution. Since D3670 we have tracked strictness of variable bindings (e.g. !x = ...) in the SrcStrictness in FunRhs (see Note [Varieties of bindings]). This is parsed by ``. However, explicitly lazy bindings (e.g. \~x = ...) are parsed via a completely different means (see the rule starting with `~` in `aexp`) and represented as `ELazyPat` until being mangled into a pattern in `RdrHsSyn`. It seems to me like these two paths should be more symmetric.
Trac metadata
| Trac field | Value |
|---|---|
| Version | 8.0.1 |
| Type | Task |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler (Parser) |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | alanz |
| Operating system | |
| Architecture |