diff --git a/packages/babel-helper-environment-visitor/src/index.ts b/packages/babel-helper-environment-visitor/src/index.ts index 7f641e834c00..ce8477aa6e94 100644 --- a/packages/babel-helper-environment-visitor/src/index.ts +++ b/packages/babel-helper-environment-visitor/src/index.ts @@ -12,10 +12,9 @@ export function skipAllButComputedKey( } } -function skipAndrequeueComputedKeysAndDecorators( +export function requeueComputedKeyAndDecorator( path: NodePath, ) { - path.skip(); const { context } = path; //@ts-ignore ClassPrivateProperty does not have computed if (path.node.computed) { @@ -38,15 +37,17 @@ export default { if (path.isArrowFunctionExpression()) { // arrows are not skipped because they inherit the context. return; - } else if (path.isMethod()) { - skipAndrequeueComputedKeysAndDecorators(path); } else { path.skip(); + if (path.isMethod()) { + requeueComputedKeyAndDecorator(path); + } } }, "ClassProperty|ClassPrivateProperty"( path: NodePath, ) { - skipAndrequeueComputedKeysAndDecorators(path); + path.skip(); + requeueComputedKeyAndDecorator(path); }, } as Visitor; diff --git a/packages/babel-traverse/src/scope/lib/renamer.ts b/packages/babel-traverse/src/scope/lib/renamer.ts index 7eecbc77e5f5..32f62116aa71 100644 --- a/packages/babel-traverse/src/scope/lib/renamer.ts +++ b/packages/babel-traverse/src/scope/lib/renamer.ts @@ -8,7 +8,7 @@ import { variableDeclarator, } from "@babel/types"; import type { Visitor } from "../../types"; -import type NodePath from "../../path"; +import { requeueComputedKeyAndDecorator } from "@babel/helper-environment-visitor"; const renameVisitor: Visitor = { ReferencedIdentifier({ node }, state) { @@ -24,7 +24,10 @@ const renameVisitor: Visitor = { state.binding.identifier, ) ) { - skipAndrequeueComputedKeysAndDecorators(path); + path.skip(); + if (path.isMethod()) { + requeueComputedKeyAndDecorator(path); + } } }, @@ -146,20 +149,3 @@ export default class Renamer { } } } - -function skipAndrequeueComputedKeysAndDecorators(path: NodePath) { - path.skip(); - if (path.isMethod()) { - const { context } = path; - if (path.node.computed) { - // requeue the computed key - context.maybeQueue(path.get("key")); - } - if (path.node.decorators) { - for (const decorator of path.get("decorators")) { - // requeue the decorators - context.maybeQueue(decorator); - } - } - } -}