Here's a really strange one.
We have a form like the following. I've stripped it down for brevity, so it looks weird:
(loop :for time :from time1 :below time2 :do
(when (foo
(ë ()
(bar
(ë () (blah)) time))
time)
(break)))
It used to generate this:
for (var time = time1; time < time2; time += 1) {
if (foo(function () {
return barr(function () {
return blah();
}, time);
}, time)) {
break;
};
};
But now it generates this:
for (var time = time1; time < time2; time += 1) {
with ({ time : time }) {
if (foo(function () {
return bar(function () {
return blah();
}, time);
}, time)) {
break;
};
};
};
That is one weird WITH clause in there! No doubt it has something
to do with lexical scoping magic going on under the hood. But
I definitely don't want it in a performance-critical loop.
Daniel