diff options
author | Simon Peyton Jones <simonpj@microsoft.com> | 2021-06-24 11:17:45 +0100 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2021-07-28 13:19:41 -0400 |
commit | 91eb18570fae4e1982e660f6dcb4f7b69de58cf2 (patch) | |
tree | 6abd2ce74ac7236ffa9c6432e2534c237f0113ec /ghc.mk | |
parent | 299b7436d140a5f43ce75a2a1d022572f23fb3f9 (diff) | |
download | haskell-91eb18570fae4e1982e660f6dcb4f7b69de58cf2.tar.gz |
Fix a subtle scoping error in simplLazyBind
In the call to prepareBinding (in simplLazyBind), I had failed to
extend the in-scope set with the binders from body_floats1. As as
result, when eta-expanding deep inside prepareBinding we made up
an eta-binder that shadowed a variable free in body1. Yikes.
It's hard to trigger this bug. It showed up when I was working
on !5658, and I started using the in-scope set for eta-expansion,
rather than taking free variables afresh. But even then it only
showed up when compiling a module in Haddock
utils/haddock/haddock-api/src/Haddock/Interface/Rename.hs
Sadly Haddock is compiled without Core Lint, so we ultimately got
a seg-fault. Lint nailed it fast once I realised that it was off.
There is some other tiny refactoring in this patch.
Diffstat (limited to 'ghc.mk')
0 files changed, 0 insertions, 0 deletions