Move array reference into for head initializer (#9698)
* Move array reference into for head initializer * Update packages/babel-plugin-transform-for-of/src/index.js Co-Authored-By: danez <daniel@tschinder.de> * Fix tests
This commit is contained in:
parent
d610289812
commit
a559397feb
@ -1,10 +1,9 @@
|
|||||||
function foo() {
|
function foo() {
|
||||||
var input = ['a', 'b', 'c'];
|
var input = ['a', 'b', 'c'];
|
||||||
var output = {};
|
var output = {};
|
||||||
var _arr = input;
|
|
||||||
|
|
||||||
for (var _i = 0; _i < _arr.length; _i++) {
|
for (var _i = 0, _input = input; _i < _input.length; _i++) {
|
||||||
var c = _arr[_i];
|
var c = _input[_i];
|
||||||
var name = c;
|
var name = c;
|
||||||
output[name] = name;
|
output[name] = name;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -70,7 +70,7 @@ export default declare((api, options) => {
|
|||||||
: pushComputedPropsSpec;
|
: pushComputedPropsSpec;
|
||||||
|
|
||||||
const buildForOfArray = template(`
|
const buildForOfArray = template(`
|
||||||
for (var KEY = 0; KEY < ARR.length; KEY++) BODY;
|
for (var KEY = 0, NAME = ARR; KEY < NAME.length; KEY++) BODY;
|
||||||
`);
|
`);
|
||||||
|
|
||||||
const buildForOfLoose = template(`
|
const buildForOfLoose = template(`
|
||||||
@ -119,20 +119,14 @@ export default declare((api, options) => {
|
|||||||
function _ForOfStatementArray(path) {
|
function _ForOfStatementArray(path) {
|
||||||
const { node, scope } = path;
|
const { node, scope } = path;
|
||||||
|
|
||||||
const uid = scope.generateUid("arr");
|
const right = scope.generateUidIdentifierBasedOnNode(node.right, "arr");
|
||||||
const nodes = [
|
|
||||||
t.variableDeclaration("var", [
|
|
||||||
t.variableDeclarator(t.identifier(uid), node.right),
|
|
||||||
]),
|
|
||||||
];
|
|
||||||
const right = t.identifier(uid);
|
|
||||||
|
|
||||||
const iterationKey = scope.generateUidIdentifier("i");
|
const iterationKey = scope.generateUidIdentifier("i");
|
||||||
|
|
||||||
let loop = buildForOfArray({
|
let loop = buildForOfArray({
|
||||||
BODY: node.body,
|
BODY: node.body,
|
||||||
KEY: iterationKey,
|
KEY: iterationKey,
|
||||||
ARR: right,
|
NAME: right,
|
||||||
|
ARR: node.right,
|
||||||
});
|
});
|
||||||
|
|
||||||
t.inherits(loop, node);
|
t.inherits(loop, node);
|
||||||
@ -160,9 +154,7 @@ export default declare((api, options) => {
|
|||||||
loop = t.labeledStatement(path.parentPath.node.label, loop);
|
loop = t.labeledStatement(path.parentPath.node.label, loop);
|
||||||
}
|
}
|
||||||
|
|
||||||
nodes.push(loop);
|
return [loop];
|
||||||
|
|
||||||
return nodes;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function replaceWithArray(path) {
|
function replaceWithArray(path) {
|
||||||
|
|||||||
@ -1,13 +1,11 @@
|
|||||||
const x = [];
|
const x = [];
|
||||||
var _arr = x;
|
|
||||||
|
|
||||||
for (var _i = 0; _i < _arr.length; _i++) {
|
for (var _i = 0, _x = x; _i < _x.length; _i++) {
|
||||||
const y = _arr[_i];
|
const y = _x[_i];
|
||||||
}
|
}
|
||||||
|
|
||||||
const arr = Object.entries(x);
|
const arr = Object.entries(x);
|
||||||
var _arr2 = arr;
|
|
||||||
|
|
||||||
for (var _i2 = 0; _i2 < _arr2.length; _i2++) {
|
for (var _i2 = 0, _arr = arr; _i2 < _arr.length; _i2++) {
|
||||||
const y = _arr2[_i2];
|
const y = _arr[_i2];
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,29 +1,19 @@
|
|||||||
var _arr = [];
|
for (var _i = 0, _arr = []; _i < _arr.length; _i++) {
|
||||||
|
|
||||||
for (var _i = 0; _i < _arr.length; _i++) {
|
|
||||||
const y = _arr[_i];
|
const y = _arr[_i];
|
||||||
}
|
}
|
||||||
|
|
||||||
var _arr2 = Array.from(x);
|
for (var _i2 = 0, _Array$from = Array.from(x); _i2 < _Array$from.length; _i2++) {
|
||||||
|
const y = _Array$from[_i2];
|
||||||
for (var _i2 = 0; _i2 < _arr2.length; _i2++) {
|
|
||||||
const y = _arr2[_i2];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var _arr3 = Object.keys(x);
|
for (var _i3 = 0, _Object$keys = Object.keys(x); _i3 < _Object$keys.length; _i3++) {
|
||||||
|
const y = _Object$keys[_i3];
|
||||||
for (var _i3 = 0; _i3 < _arr3.length; _i3++) {
|
|
||||||
const y = _arr3[_i3];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var _arr4 = Object.values(x);
|
for (var _i4 = 0, _Object$values = Object.values(x); _i4 < _Object$values.length; _i4++) {
|
||||||
|
const y = _Object$values[_i4];
|
||||||
for (var _i4 = 0; _i4 < _arr4.length; _i4++) {
|
|
||||||
const y = _arr4[_i4];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var _arr5 = Object.entries(x);
|
for (var _i5 = 0, _Object$entries = Object.entries(x); _i5 < _Object$entries.length; _i5++) {
|
||||||
|
const y = _Object$entries[_i5];
|
||||||
for (var _i5 = 0; _i5 < _arr5.length; _i5++) {
|
|
||||||
const y = _arr5[_i5];
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,4 @@
|
|||||||
var _arr = b;
|
for (var _i = 0, _arr = b; _i < _arr.length; _i++) {
|
||||||
|
|
||||||
for (var _i = 0; _i < _arr.length; _i++) {
|
|
||||||
const y = _arr[_i];
|
const y = _arr[_i];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,5 @@
|
|||||||
if (true) {
|
if (true) {
|
||||||
var _arr = [];
|
loop: for (var _i = 0, _arr = []; _i < _arr.length; _i++) {
|
||||||
|
|
||||||
loop: for (var _i = 0; _i < _arr.length; _i++) {
|
|
||||||
let ch = _arr[_i];
|
let ch = _arr[_i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,5 @@
|
|||||||
if (true) {
|
if (true) {
|
||||||
var _arr = [];
|
loop: for (var _i = 0, _arr = []; _i < _arr.length; _i++) {
|
||||||
|
|
||||||
loop: for (var _i = 0; _i < _arr.length; _i++) {
|
|
||||||
let ch = _arr[_i];
|
let ch = _arr[_i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,8 +1,6 @@
|
|||||||
function f(...t) {
|
function f(...t) {
|
||||||
var _arr = t;
|
for (var _i = 0, _t = t; _i < _t.length; _i++) {
|
||||||
|
let o = _t[_i];
|
||||||
for (var _i = 0; _i < _arr.length; _i++) {
|
|
||||||
let o = _arr[_i];
|
|
||||||
const t = o;
|
const t = o;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
var arr = [1, 2, 3];
|
var arr = [1, 2, 3];
|
||||||
var _arr = arr;
|
|
||||||
|
|
||||||
for (var _i = 0; _i < _arr.length; _i++) {
|
for (var _i = 0, _arr = arr; _i < _arr.length; _i++) {
|
||||||
let v = _arr[_i];
|
let v = _arr[_i];
|
||||||
console.log(v);
|
console.log(v);
|
||||||
arr = null;
|
arr = null;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user