allow MemberExpressions in for-of head

This commit is contained in:
Sebastian McKenzie
2015-02-23 21:31:57 +11:00
parent 84d2d7b7d4
commit eea48f866d
5 changed files with 25 additions and 2 deletions

View File

@@ -65,7 +65,7 @@ var loose = function (node, parent, scope, file) {
var left = node.left;
var declar, id;
if (t.isIdentifier(left) || t.isPattern(left)) {
if (t.isIdentifier(left) || t.isPattern(left) || t.isMemberExpression(left)) {
// for (i of test), for ({ i } of test)
id = left;
} else if (t.isVariableDeclaration(left)) {
@@ -126,7 +126,7 @@ var spec = function (node, parent, scope, file) {
var stepKey = scope.generateUidIdentifier("step");
var stepValue = t.memberExpression(stepKey, t.identifier("value"));
if (t.isIdentifier(left) || t.isPattern(left)) {
if (t.isIdentifier(left) || t.isPattern(left) || t.isMemberExpression(left)) {
// for (i of test), for ({ i } of test)
declar = t.expressionStatement(t.assignmentExpression("=", left, stepValue));
} else if (t.isVariableDeclaration(left)) {

View File

@@ -0,0 +1,3 @@
for (obj.prop of arr) {
}

View File

@@ -0,0 +1,12 @@
"use strict";
for (var _iterator = arr, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
if (_isArray) {
if (_i >= _iterator.length) break;
obj.prop = _iterator[_i++];
} else {
_i = _iterator.next();
if (_i.done) break;
obj.prop = _i.value;
}
}

View File

@@ -0,0 +1,3 @@
for (obj.prop of arr) {
}

View File

@@ -0,0 +1,5 @@
"use strict";
for (var _iterator = arr[Symbol.iterator](), _step; !(_step = _iterator.next()).done;) {
obj.prop = _step.value;
}