From 49e3e710695ecb685a9c53e2863b1671f77b05f5 Mon Sep 17 00:00:00 2001 From: Federico Ciardi Date: Thu, 5 Aug 2021 13:28:02 +0200 Subject: [PATCH] Use spread push --- .../babel-cli/src/babel-external-helpers.ts | 2 +- packages/babel-cli/src/babel/options.ts | 4 +-- packages/babel-helper-define-map/src/index.js | 5 ++- packages/babel-node/src/_babel-node.js | 2 +- packages/babel-node/src/babel-node.js | 2 +- .../src/index.js | 2 +- .../src/transformClass.ts | 13 ++++---- .../src/no-helper-implementation.js | 2 +- .../src/index.js | 10 +++--- .../src/rest.js | 5 +-- packages/babel-traverse/src/path/family.ts | 33 +++++++++---------- .../src/path/inference/inferer-reference.ts | 2 +- .../babel-types/src/comments/addComments.ts | 2 +- .../flow/removeTypeDuplicates.ts | 4 +-- .../typescript/removeTypeDuplicates.ts | 2 +- 15 files changed, 40 insertions(+), 50 deletions(-) diff --git a/packages/babel-cli/src/babel-external-helpers.ts b/packages/babel-cli/src/babel-external-helpers.ts index ca09b8ae0bc7..930cf56717ef 100755 --- a/packages/babel-cli/src/babel-external-helpers.ts +++ b/packages/babel-cli/src/babel-external-helpers.ts @@ -11,7 +11,7 @@ function collect( const values = value.split(","); if (previousValue) { - Array.prototype.push.apply(previousValue, values); + previousValue.push(...values); return previousValue; } return values; diff --git a/packages/babel-cli/src/babel/options.ts b/packages/babel-cli/src/babel/options.ts index 98f67bb0b6d3..da35ca377b5a 100644 --- a/packages/babel-cli/src/babel/options.ts +++ b/packages/babel-cli/src/babel/options.ts @@ -192,7 +192,7 @@ export default function parseArgv(args: Array): CmdOptions | null { let filenames = commander.args.reduce(function (globbed, input) { let files = glob.sync(input); if (!files.length) files = [input]; - Array.prototype.push.apply(globbed, files); + globbed.push(...files); return globbed; }, []); @@ -355,7 +355,7 @@ function collect( const values = value.split(","); if (previousValue) { - Array.prototype.push.apply(previousValue, values); + previousValue.push(...values); return previousValue; } return values; diff --git a/packages/babel-helper-define-map/src/index.js b/packages/babel-helper-define-map/src/index.js index 463026389064..2d90fb6d2675 100644 --- a/packages/babel-helper-define-map/src/index.js +++ b/packages/babel-helper-define-map/src/index.js @@ -42,9 +42,8 @@ export function push( if (node.decorators) { const decorators = (map.decorators = map.decorators || t.arrayExpression([])); - Array.prototype.push.apply( - decorators.elements, - node.decorators.map(dec => dec.expression).reverse(), + decorators.elements.push( + ...node.decorators.map(dec => dec.expression).reverse(), ); } diff --git a/packages/babel-node/src/_babel-node.js b/packages/babel-node/src/_babel-node.js index 52f03b40a932..7331d99943da 100644 --- a/packages/babel-node/src/_babel-node.js +++ b/packages/babel-node/src/_babel-node.js @@ -22,7 +22,7 @@ function collect(value, previousValue): Array { const values = value.split(","); if (previousValue) { - Array.prototype.push.apply(previousValue, values); + previousValue.push(...values); return previousValue; } return values; diff --git a/packages/babel-node/src/babel-node.js b/packages/babel-node/src/babel-node.js index 5fd1885c1b37..909c6bb978aa 100755 --- a/packages/babel-node/src/babel-node.js +++ b/packages/babel-node/src/babel-node.js @@ -69,7 +69,7 @@ getV8Flags(async function (err, v8Flags) { // append arguments passed after -- if (argSeparator > -1) { - Array.prototype.push.apply(args, userArgs); + args.push(...userArgs); } try { diff --git a/packages/babel-plugin-proposal-async-generator-functions/src/index.js b/packages/babel-plugin-proposal-async-generator-functions/src/index.js index 4711f9e2b3fa..0d4d4492faa5 100644 --- a/packages/babel-plugin-proposal-async-generator-functions/src/index.js +++ b/packages/babel-plugin-proposal-async-generator-functions/src/index.js @@ -47,7 +47,7 @@ export default declare(api => { } // push the rest of the original loop body onto our new body - Array.prototype.push.apply(block.body, node.body.body); + block.body.push(...node.body.body); t.inherits(loop, node); t.inherits(loop.body, node.body); diff --git a/packages/babel-plugin-transform-classes/src/transformClass.ts b/packages/babel-plugin-transform-classes/src/transformClass.ts index a7bd7593f952..a23465dbb920 100644 --- a/packages/babel-plugin-transform-classes/src/transformClass.ts +++ b/packages/babel-plugin-transform-classes/src/transformClass.ts @@ -136,10 +136,8 @@ export default function transformClass( if (classState.userConstructor) { const { constructorBody, userConstructor, construct } = classState; - Array.prototype.push.apply( - constructorBody.body, - userConstructor.body.body, - ); + + constructorBody.body.push(...userConstructor.body.body); t.inherits(construct, userConstructor); t.inherits(constructorBody, userConstructor.body); } @@ -713,9 +711,10 @@ export default function transformClass( ); } - Array.prototype.push.apply( - body, - classState.staticPropBody.map(fn => fn(t.cloneNode(classState.classRef))), + body.push( + ...classState.staticPropBody.map(fn => + fn(t.cloneNode(classState.classRef)), + ), ); const isStrict = path.isInStrictMode(); diff --git a/packages/babel-plugin-transform-for-of/src/no-helper-implementation.js b/packages/babel-plugin-transform-for-of/src/no-helper-implementation.js index 837aef94841d..c867a5d0960a 100644 --- a/packages/babel-plugin-transform-for-of/src/no-helper-implementation.js +++ b/packages/babel-plugin-transform-for-of/src/no-helper-implementation.js @@ -24,7 +24,7 @@ export default function transformWithoutHelper(loose, path, state) { } // push the rest of the original loop body onto our new body - Array.prototype.push.apply(block.body, node.body.body); + block.body.push(...node.body.body); t.inherits(loop, node); t.inherits(loop.body, node.body); diff --git a/packages/babel-plugin-transform-modules-systemjs/src/index.js b/packages/babel-plugin-transform-modules-systemjs/src/index.js index e7fa09c9f6e3..b9407d8c1e10 100644 --- a/packages/babel-plugin-transform-modules-systemjs/src/index.js +++ b/packages/babel-plugin-transform-modules-systemjs/src/index.js @@ -540,9 +540,8 @@ export default declare((api, options) => { } } - Array.prototype.push.apply( - setterBody, - constructExportCall( + setterBody.push( + ...constructExportCall( path, t.identifier(exportIdent), exportNames, @@ -590,9 +589,8 @@ export default declare((api, options) => { } if (exportNames.length) { - Array.prototype.push.apply( - beforeBody, - constructExportCall( + beforeBody.push( + ...constructExportCall( path, t.identifier(exportIdent), exportNames, diff --git a/packages/babel-plugin-transform-parameters/src/rest.js b/packages/babel-plugin-transform-parameters/src/rest.js index 5cf051185d99..2d2f422d3c90 100644 --- a/packages/babel-plugin-transform-parameters/src/rest.js +++ b/packages/babel-plugin-transform-parameters/src/rest.js @@ -305,10 +305,7 @@ export default function convertFunctionRest(path) { return true; } - Array.prototype.push.apply( - state.references, - state.candidates.map(({ path }) => path), - ); + state.references.push(...state.candidates.map(({ path }) => path)); const start = t.numericLiteral(paramsCount); const key = scope.generateUidIdentifier("key"); diff --git a/packages/babel-traverse/src/path/family.ts b/packages/babel-traverse/src/path/family.ts index 3238ec8d4b66..2d5442312f05 100644 --- a/packages/babel-traverse/src/path/family.ts +++ b/packages/babel-traverse/src/path/family.ts @@ -47,7 +47,7 @@ function addCompletionRecords( context: CompletionContext, ): Completion[] { if (path) { - Array.prototype.push.apply(records, _getCompletionRecords(path, context)); + records.push(..._getCompletionRecords(path, context)); } return records; } @@ -75,9 +75,9 @@ function completionRecordForSwitch( if (normalCompletions.length) { lastNormalCompletions = normalCompletions; } - Array.prototype.push.apply(records, breakCompletions); + records.push(...breakCompletions); } - Array.prototype.push.apply(records, lastNormalCompletions); + records.push(...lastNormalCompletions); return records; } @@ -157,11 +157,11 @@ function getStatementListCompletion( // When we have seen normal completions from the last statement // it is safe to stop populating break and mark normal completions as break normalCompletionToBreak(lastNormalCompletions); - Array.prototype.push.apply(completions, lastNormalCompletions); + completions.push(...lastNormalCompletions); // Declarations have empty completion record, however they can not be nested // directly in return statement, i.e. `return (var a = 1)` is invalid. if (lastNormalCompletions.some(c => c.path.isDeclaration())) { - Array.prototype.push.apply(completions, statementCompletions); + completions.push(...statementCompletions); replaceBreakStatementInBreakCompletion( statementCompletions, /* reachable */ true, @@ -172,7 +172,7 @@ function getStatementListCompletion( /* reachable */ false, ); } else { - Array.prototype.push.apply(completions, statementCompletions); + completions.push(...statementCompletions); if (!context.shouldPopulateBreak) { replaceBreakStatementInBreakCompletion( statementCompletions, @@ -183,11 +183,10 @@ function getStatementListCompletion( break; } if (i === paths.length - 1) { - Array.prototype.push.apply(completions, statementCompletions); + completions.push(...statementCompletions); } else { - Array.prototype.push.apply( - completions, - statementCompletions.filter(c => c.type === BREAK_COMPLETION), + completions.push( + ...statementCompletions.filter(c => c.type === BREAK_COMPLETION), ); lastNormalCompletions = statementCompletions.filter( c => c.type === NORMAL_COMPLETION, @@ -205,7 +204,7 @@ function getStatementListCompletion( (pathCompletions.length === 1 && !pathCompletions[0].path.isVariableDeclaration()) ) { - Array.prototype.push.apply(completions, pathCompletions); + completions.push(...pathCompletions); break; } } @@ -230,10 +229,9 @@ function _getCompletionRecords( // @ts-expect-error(flow->ts): todo records = addCompletionRecords(path.get("body"), records, context); } else if (path.isProgram() || path.isBlockStatement()) { - Array.prototype.push.apply( - records, + records.push( // @ts-expect-error(flow->ts): todo - getStatementListCompletion(path.get("body"), context), + ...getStatementListCompletion(path.get("body"), context), ); } else if (path.isFunction()) { return _getCompletionRecords(path.get("body"), context); @@ -245,9 +243,8 @@ function _getCompletionRecords( } else if (path.isSwitchStatement()) { records = completionRecordForSwitch(path.get("cases"), records, context); } else if (path.isSwitchCase()) { - Array.prototype.push.apply( - records, - getStatementListCompletion(path.get("consequent"), { + records.push( + ...getStatementListCompletion(path.get("consequent"), { canHaveBreak: true, shouldPopulateBreak: false, inCaseClause: true, @@ -543,7 +540,7 @@ export function getBindingIdentifierPaths( const key = keys[i]; const child = id.get(key); if (Array.isArray(child)) { - Array.prototype.push.apply(search, child); + search.push(...child); } else if (child.node) { search.push(child); } diff --git a/packages/babel-traverse/src/path/inference/inferer-reference.ts b/packages/babel-traverse/src/path/inference/inferer-reference.ts index 71441dbe39c7..a2ef981955ee 100644 --- a/packages/babel-traverse/src/path/inference/inferer-reference.ts +++ b/packages/babel-traverse/src/path/inference/inferer-reference.ts @@ -84,7 +84,7 @@ function getTypeAnnotationBindingConstantViolations(binding, path, name) { }*/ // add back on function constant violations since we can't track calls - Array.prototype.push.apply(constantViolations, functionConstantViolations); + constantViolations.push(...functionConstantViolations); // push on inferred types of violated paths for (const violation of constantViolations) { diff --git a/packages/babel-types/src/comments/addComments.ts b/packages/babel-types/src/comments/addComments.ts index 294e3d9a4e58..a01ce1c42b94 100644 --- a/packages/babel-types/src/comments/addComments.ts +++ b/packages/babel-types/src/comments/addComments.ts @@ -16,7 +16,7 @@ export default function addComments( if (type === "leading") { node[key] = comments.concat(node[key]); } else { - Array.prototype.push.apply(node[key], comments); + node[key].push(...comments); } } else { node[key] = comments; diff --git a/packages/babel-types/src/modifications/flow/removeTypeDuplicates.ts b/packages/babel-types/src/modifications/flow/removeTypeDuplicates.ts index ff75c19e7704..90d8ba233a17 100644 --- a/packages/babel-types/src/modifications/flow/removeTypeDuplicates.ts +++ b/packages/babel-types/src/modifications/flow/removeTypeDuplicates.ts @@ -17,7 +17,7 @@ function getQualifiedName(node: t.GenericTypeAnnotation["id"]) { * Dedupe type annotations. */ export default function removeTypeDuplicates( - nodes: ReadonlyArray, + nodes: (t.FlowType | false | null | undefined)[], ): t.FlowType[] { const generics = {}; const bases = {}; @@ -48,7 +48,7 @@ export default function removeTypeDuplicates( if (isUnionTypeAnnotation(node)) { if (typeGroups.indexOf(node.types) < 0) { - Array.prototype.push.apply(nodes, node.types); + nodes.push(...node.types); typeGroups.push(node.types); } continue; diff --git a/packages/babel-types/src/modifications/typescript/removeTypeDuplicates.ts b/packages/babel-types/src/modifications/typescript/removeTypeDuplicates.ts index 18bc7334bbe8..0b9f3f30787f 100644 --- a/packages/babel-types/src/modifications/typescript/removeTypeDuplicates.ts +++ b/packages/babel-types/src/modifications/typescript/removeTypeDuplicates.ts @@ -41,7 +41,7 @@ export default function removeTypeDuplicates( if (isTSUnionType(node)) { if (typeGroups.indexOf(node.types) < 0) { - Array.prototype.push.apply(nodes, node.types); + nodes.push(...node.types); typeGroups.push(node.types); } continue;