diff --git a/packages/babel-plugin-transform-block-scoping/src/index.ts b/packages/babel-plugin-transform-block-scoping/src/index.ts index f50d5fbf1f48..edf7daf82eb9 100644 --- a/packages/babel-plugin-transform-block-scoping/src/index.ts +++ b/packages/babel-plugin-transform-block-scoping/src/index.ts @@ -257,16 +257,16 @@ const hoistVarDeclarationsVisitor: Visitor = { }, }; -interface LoopVisitorState { +type LoopVisitorState = { inSwitchCase: boolean; hasBreakContinue: boolean; innerLabels: any[]; hasReturn: boolean; ignoreLabeless: boolean; - LOOP_IGNORE: symbol; + loopIgnored: WeakSet; isLoop: boolean; map: any; -} +}; const loopLabelVisitor: Visitor = { LabeledStatement({ node }, state) { @@ -332,7 +332,7 @@ const loopVisitor: Visitor = { state, ) { const { node, scope } = path; - if (node[this.LOOP_IGNORE]) return; + if (state.loopIgnored.has(node)) return; let replace; let loopText = loopNodeTo(node); @@ -376,7 +376,7 @@ const loopVisitor: Visitor = { if (replace) { replace = t.returnStatement(replace); - replace[this.LOOP_IGNORE] = true; + state.loopIgnored.add(replace); path.skip(); path.replaceWith(t.inherits(replace, node)); } @@ -934,7 +934,7 @@ class BlockScoping { hasReturn: false, isLoop: !!this.loop, map: {}, - LOOP_IGNORE: Symbol(), + loopIgnored: new WeakSet(), }; this.blockPath.traverse(loopLabelVisitor, state); diff --git a/packages/babel-plugin-transform-classes/src/index.ts b/packages/babel-plugin-transform-classes/src/index.ts index e4eb543192f2..598b6a7656bb 100644 --- a/packages/babel-plugin-transform-classes/src/index.ts +++ b/packages/babel-plugin-transform-classes/src/index.ts @@ -7,7 +7,7 @@ import globals from "globals"; import transformClass from "./transformClass"; import type { Visitor, NodePath } from "@babel/traverse"; -const getBuiltinClasses = category => +const getBuiltinClasses = (category: string) => Object.keys(globals[category]).filter(name => /^[A-Z]/.test(name)); const builtinClasses = new Set([ @@ -33,7 +33,7 @@ export default declare((api, options: Options) => { const noClassCalls = (api.assumption("noClassCalls") ?? loose) as boolean; // todo: investigate traversal requeueing - const VISITED = Symbol(); + const VISITED = new WeakSet(); return { name: "transform-classes", @@ -58,7 +58,7 @@ export default declare((api, options: Options) => { ClassExpression(path, state) { const { node } = path; - if (node[VISITED]) return; + if (VISITED.has(node)) return; const inferred = nameFunction(path); if (inferred && inferred !== node) { @@ -66,7 +66,7 @@ export default declare((api, options: Options) => { return; } - node[VISITED] = true; + VISITED.add(node); path.replaceWith( transformClass(path, state.file, builtinClasses, loose, { diff --git a/packages/babel-plugin-transform-modules-systemjs/src/index.ts b/packages/babel-plugin-transform-modules-systemjs/src/index.ts index c234cf87600a..19ff21f0e890 100644 --- a/packages/babel-plugin-transform-modules-systemjs/src/index.ts +++ b/packages/babel-plugin-transform-modules-systemjs/src/index.ts @@ -170,14 +170,14 @@ export default declare((api, options: Options) => { api.assertVersion(7); const { systemGlobal = "System", allowTopLevelThis = false } = options; - const IGNORE_REASSIGNMENT_SYMBOL = Symbol(); + const reassignmentVisited = new WeakSet(); const reassignmentVisitor: Visitor = { "AssignmentExpression|UpdateExpression"( path: NodePath, ) { - if (path.node[IGNORE_REASSIGNMENT_SYMBOL]) return; - path.node[IGNORE_REASSIGNMENT_SYMBOL] = true; + if (reassignmentVisited.has(path.node)) return; + reassignmentVisited.add(path.node); const arg = path.isAssignmentExpression() ? path.get("left")