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(); path.ensureBlock();
if (node.body.body.length === 0 && path.isCompletionRecord()) {
node.body.body.unshift(
t.expressionStatement(scope.buildUndefinedNode()),
);
}
node.body.body.unshift( node.body.body.unshift(
t.variableDeclaration("var", [ t.expressionStatement(
t.variableDeclarator(left, t.cloneNode(temp)), t.assignmentExpression("=", left, t.cloneNode(temp)),
]), ),
); );
return; 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 []) { for (var _ref2 of []) {
var { var _ref3 = _ref2;
({
a a
} = _ref2, } = _ref3);
b = babelHelpers.objectWithoutProperties(_ref2, ["a"]); b = babelHelpers.objectWithoutProperties(_ref3, ["a"]);
_ref3;
} }
async function a() { async function a() {
for await (var _ref3 of []) { for await (var _ref4 of []) {
var { var _ref5 = _ref4;
({
a a
} = _ref3, } = _ref5);
b = babelHelpers.objectWithoutProperties(_ref3, ["a"]); b = babelHelpers.objectWithoutProperties(_ref5, ["a"]);
_ref5;
} }
} // skip } // skip

View File

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

View File

@ -1,3 +1,7 @@
for (var [name, value] in obj) { for (var [name, value] in obj) {
print("Name: " + name + ", Value: " + value); 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]; var value = _ref2[1];
print("Name: " + name + ", Value: " + value); 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 (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 before = _ref2[1];
var after = _ref2[2]; 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;
}