Here's a really strange one.<div><br></div><div>We have a form like the following. I've stripped it down for brevity, so it looks weird:</div><div><br></div><div><div>(loop :for time :from time1 :below time2 :do</div>

<div>  (when (foo</div><div>         (ë ()</div><div>           (bar</div><div>            (ë () (blah)) time))</div><div>         time)</div><div>    (break)))</div></div><div><br></div><div>It used to generate this:</div>

<div><br></div><div><div>for (var time = time1; time < time2; time += 1) {</div><div>    if (foo(function () {</div><div>        return barr(function () {</div><div>            return blah();</div><div>        }, time);</div>

<div>    }, time)) {</div><div>        break;</div><div>    };</div><div>};</div></div><div><br></div><div>But now it generates this:</div><div><br></div><div><div>for (var time = time1; time < time2; time += 1) {</div>

<div>    with ({ time : time }) {</div><div>        if (foo(function () {</div><div>            return bar(function () {</div><div>                return blah();</div><div>            }, time);</div><div>        }, time)) {</div>

<div>            break;</div><div>        };</div><div>    };</div><div>};</div></div><div><br></div><div>That is one weird WITH clause in there! No doubt it has something</div><div>to do with lexical scoping magic going on under the hood. But </div>

<div>I definitely don't want it in a performance-critical loop.</div><div><br></div><div>Daniel</div>