allow MemberExpressions in for-of head
This commit is contained in:
@@ -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)) {
|
||||
|
||||
3
test/fixtures/transformation/es6-for-of-loose/member-expression/actual.js
vendored
Normal file
3
test/fixtures/transformation/es6-for-of-loose/member-expression/actual.js
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
for (obj.prop of arr) {
|
||||
|
||||
}
|
||||
12
test/fixtures/transformation/es6-for-of-loose/member-expression/expected.js
vendored
Normal file
12
test/fixtures/transformation/es6-for-of-loose/member-expression/expected.js
vendored
Normal 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;
|
||||
}
|
||||
}
|
||||
3
test/fixtures/transformation/es6-for-of/member-expression/actual.js
vendored
Normal file
3
test/fixtures/transformation/es6-for-of/member-expression/actual.js
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
for (obj.prop of arr) {
|
||||
|
||||
}
|
||||
5
test/fixtures/transformation/es6-for-of/member-expression/expected.js
vendored
Normal file
5
test/fixtures/transformation/es6-for-of/member-expression/expected.js
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
"use strict";
|
||||
|
||||
for (var _iterator = arr[Symbol.iterator](), _step; !(_step = _iterator.next()).done;) {
|
||||
obj.prop = _step.value;
|
||||
}
|
||||
Reference in New Issue
Block a user