diff options
| author | Joachim Breitner <mail@joachim-breitner.de> | 2017-10-26 19:36:24 -0400 |
|---|---|---|
| committer | Joachim Breitner <mail@joachim-breitner.de> | 2017-10-29 00:00:16 -0400 |
| commit | 97ca0d249c380a961a4cb90afb44bfcee1f632f2 (patch) | |
| tree | 296e9820843f23f1e3176e2005c98d8d61bcdf09 /docs/users_guide/conf.py | |
| parent | 922db3dac896b8cf364c9ebaebf1a27c2468c709 (diff) | |
| download | haskell-97ca0d249c380a961a4cb90afb44bfcee1f632f2.tar.gz | |
simplNonRecJoinPoint: Handle Shadowing correctly
Previously, (since 33452df), simplNonRecJoinPoint would do the wrong
thing in the presence of shadowing: It analyzed the RHS of a join
binding with the environment for the body. In particular, with
foo x =
join x = x * x
in x
where there is shadowing, it renames the inner x to x1, and should
produce
foo x =
join x1 = x * x
in x1
but because the substitution (x ↦ x1) is also used on the RHS we get the
bogus
foo x =
join x1 = x1 * x1
in x1
Fixed this by adding a `rhs_se` parameter, analogous to `simplNonRecE`
and `simplLazyBind`.
Differential Revision: https://phabricator.haskell.org/D4130
Diffstat (limited to 'docs/users_guide/conf.py')
0 files changed, 0 insertions, 0 deletions
