// The identifier of a ComprehensionFor is only bound within its tail. function t() { var x = [0, 1, 2]; return [for (x of x) x*2] } assertDeepEq(t(), [0, 2, 4]); // Each iteration should create a fresh binding. Unfortunately this is // not currently the case, but bug 449811 will fix this. function t2() { var x = [0, 1, 2]; return [for (x of x) ()=>x] } // FIXME: Should be [0, 1, 2]. assertDeepEq([for (x of t2()) x()], [2, 2, 2]); reportCompare(null, null, "test");