for-of variable scope bug when targeting node 0.12, node 0.10
$ buble -v
Bublé version 0.15.2
input code:
$ cat for-of.js
function foo(e) {
for (const i of e) {
const e = i;
console.log(e);
}
}
foo("AB");
foo([10, 20]);
expected result:
$ cat for-of.js | node
A
B
10
20
$ cat for-of.js | babel | node
A
B
10
20
$ cat for-of.js | buble -t node:6 | node
A
B
10
20
$ cat for-of.js | buble -t node:4 | node
A
B
10
20
Buble generates incorrect ES6 code for node 0.12:
$ cat for-of.js | buble -t node:0.12 | node
[stdin]:2
for (var i of e$1) {
^
TypeError: Cannot read property 'Symbol(Symbol.iterator)' of undefined
$ cat for-of.js | buble -t node:0.12
function foo(e) {
for (var i of e$1) {
var e$1 = i;
console.log(e$1);
}
}
foo("AB");
foo([10, 20]);
Buble also generates incorrect ES5 code for node 0.10:
$ cat for-of.js | buble -t node:0.10 -y dangerousForOf
function foo(e) {
for (var i$1 = 0, list = e$1; i$1 < list.length; i$1 += 1) {
var i = list[i$1];
var e$1 = i;
console.log(e$1);
}
}
foo("AB");
foo([10, 20]);
$ cat for-of.js | buble -t node:0.10 -y dangerousForOf | node
[stdin]:2
for (var i$1 = 0, list = e$1; i$1 < list.length; i$1 += 1) {
^
TypeError: Cannot read property 'length' of undefined