Commit d8ef45a3 authored by sewardj's avatar sewardj
Browse files

[project @ 2002-01-24 16:55:04 by sewardj]

This is one of those commits where the commit message is hundreds of
times, in bytes, larger than the fix.  If you count pixels, it's
probably more like thousands of times larger, since the fix involves
adding a missing apostrophe.

In compiling let bindings, when filtering the free vars of each RHS
against the supplied on-stack environment p, filter against p after it
has been augmented with the binders in this let (viz, p'), rather than
before.  Without this, letrec-bound binders can never "get started" in
the environment.

This fixes the HEAD crash for [(i,1) | i <- [1]].  Stable branch
is ok since the free-var machinery works a different way there.
parent 373fabef
......@@ -312,7 +312,7 @@ schemeE d s p (fvs, AnnLet binds b)
AnnRec xs_n_rhss -> unzip xs_n_rhss
n = length xs
is_local id = not (isTyVar id) && elemFM id p
is_local id = not (isTyVar id) && elemFM id p'
fvss = map (filter is_local . varSetElems . fst) rhss
-- Sizes of tagged free vars, + 1 for the fn
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