Destructuring: Create assignments from ForX non-declaration patterns (#9414)

This commit is contained in:
Moti Zilberman 2019-01-28 08:50:24 +00:00 committed by Nicolò Ribaudo
parent ede69eef7f
commit 1452e977a0
9 changed files with 62 additions and 11 deletions

View File

@ -377,10 +377,16 @@ export default declare((api, opts) => {
path.ensureBlock();
if (node.body.body.length === 0 && path.isCompletionRecord()) {
node.body.body.unshift(
t.variableDeclaration("var", [
t.variableDeclarator(left, t.cloneNode(temp)),
]),
t.expressionStatement(scope.buildUndefinedNode()),
);
}
node.body.body.unshift(
t.expressionStatement(
t.assignmentExpression("=", left, t.cloneNode(temp)),
),
);
return;

View File

@ -0,0 +1 @@
for ({a, ...b} of []) {}

View File

@ -0,0 +1,9 @@
for (var _ref of []) {
var _ref2 = _ref;
({
a
} = _ref2);
b = babelHelpers.objectWithoutProperties(_ref2, ["a"]);
_ref2;
void 0;
}

View File

@ -7,18 +7,22 @@ for (var _ref of []) {
}
for (var _ref2 of []) {
var {
var _ref3 = _ref2;
({
a
} = _ref2,
b = babelHelpers.objectWithoutProperties(_ref2, ["a"]);
} = _ref3);
b = babelHelpers.objectWithoutProperties(_ref3, ["a"]);
_ref3;
}
async function a() {
for await (var _ref3 of []) {
var {
for await (var _ref4 of []) {
var _ref5 = _ref4;
({
a
} = _ref3,
b = babelHelpers.objectWithoutProperties(_ref3, ["a"]);
} = _ref5);
b = babelHelpers.objectWithoutProperties(_ref5, ["a"]);
_ref5;
}
} // skip

View File

@ -449,8 +449,14 @@ export default declare((api, options) => {
path.ensureBlock();
if (node.body.body.length === 0 && path.isCompletionRecord()) {
node.body.body.unshift(
t.variableDeclaration("var", [t.variableDeclarator(left, temp)]),
t.expressionStatement(scope.buildUndefinedNode()),
);
}
node.body.body.unshift(
t.expressionStatement(t.assignmentExpression("=", left, temp)),
);
return;

View File

@ -1,3 +1,7 @@
for (var [name, value] in obj) {
print("Name: " + name + ", Value: " + value);
}
for ([name, value] in obj) {
print("Name: " + name + ", Value: " + value);
}

View File

@ -5,3 +5,11 @@ for (var _ref in obj) {
var value = _ref2[1];
print("Name: " + name + ", Value: " + value);
}
for (var _ref3 in obj) {
var _ref4 = babelHelpers.slicedToArray(_ref3, 2);
name = _ref4[0];
value = _ref4[1];
print("Name: " + name + ", Value: " + value);
}

View File

@ -1,3 +1,7 @@
for (var [ name, before, after ] of test.expectation.registers) {
}
for ([ name, before, after ] of test.expectation.registers) {
}

View File

@ -5,3 +5,12 @@ for (var _ref of test.expectation.registers) {
var before = _ref2[1];
var after = _ref2[2];
}
for (var _ref3 of test.expectation.registers) {
var _ref4 = babelHelpers.slicedToArray(_ref3, 3);
name = _ref4[0];
before = _ref4[1];
after = _ref4[2];
void 0;
}