From e400a6ec0e4706f606ae9b1e2897b0bb1cff6343 Mon Sep 17 00:00:00 2001 From: Ben Asher Date: Fri, 6 May 2022 14:04:42 -0700 Subject: [PATCH] fix(transformers): use `Array.sort` in hoisting transformer (#3498) fixes #3476 --- src/transformers/hoist-jest.ts | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/src/transformers/hoist-jest.ts b/src/transformers/hoist-jest.ts index 9c0a164314..55e4d83350 100644 --- a/src/transformers/hoist-jest.ts +++ b/src/transformers/hoist-jest.ts @@ -87,21 +87,12 @@ export function factory({ configSet }: TsCompilerInstance) { return statements } - const pivot = statements[0] - const leftPart: _ts.Statement[] = [] - const rightPart: _ts.Statement[] = [] - for (let i = 1; i < statements.length; i++) { - const currentStatement = statements[i] - if (isJestGlobalImport(currentStatement)) { - leftPart.push(currentStatement) - } else { - isHoistableStatement(currentStatement) && !isHoistableStatement(pivot) && !isJestGlobalImport(pivot) - ? leftPart.push(currentStatement) - : rightPart.push(currentStatement) - } - } - - return sortStatements(leftPart).concat(pivot, sortStatements(rightPart)) + return statements.sort((stmtA, stmtB) => + isJestGlobalImport(stmtA) || + (isHoistableStatement(stmtA) && !isHoistableStatement(stmtB) && !isJestGlobalImport(stmtB)) + ? -1 + : 1, + ) } const createVisitor = (ctx: _ts.TransformationContext, _: _ts.SourceFile) => {