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 |