From 05c1c39ada0da1dc70b4995d9101f072f4052a83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Fri, 16 Dec 2022 17:50:01 +0100 Subject: [PATCH] [babel 8] Remove `block` argument from `Scope#rename` --- packages/babel-traverse/src/scope/index.ts | 15 ++++++++++++--- packages/babel-traverse/src/scope/lib/renamer.ts | 12 +++++++++--- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/packages/babel-traverse/src/scope/index.ts b/packages/babel-traverse/src/scope/index.ts index ac957a3f1cdb..93874869506e 100644 --- a/packages/babel-traverse/src/scope/index.ts +++ b/packages/babel-traverse/src/scope/index.ts @@ -611,11 +611,20 @@ export default class Scope { } } - rename(oldName: string, newName?: string, block?: t.Pattern | t.Scopable) { + rename( + oldName: string, + newName?: string, + // prettier-ignore + /* Babel 7 - block?: t.Pattern | t.Scopable */ + ) { const binding = this.getBinding(oldName); if (binding) { - newName = newName || this.generateUidIdentifier(oldName).name; - return new Renamer(binding, oldName, newName).rename(block); + newName ||= this.generateUidIdentifier(oldName).name; + const renamer = new Renamer(binding, oldName, newName); + return process.env.BABEL_8_BREAKING + ? renamer.rename() + : // @ts-expect-error: babel 7->8 + renamer.rename(arguments[2]); } } diff --git a/packages/babel-traverse/src/scope/lib/renamer.ts b/packages/babel-traverse/src/scope/lib/renamer.ts index c3ba79706d01..c8ac4ac776ab 100644 --- a/packages/babel-traverse/src/scope/lib/renamer.ts +++ b/packages/babel-traverse/src/scope/lib/renamer.ts @@ -111,7 +111,7 @@ export default class Renamer { // ); } - rename(block?: t.Pattern | t.Scopable) { + rename(/* Babel 7 - block?: t.Pattern | t.Scopable */) { const { binding, oldName, newName } = this; const { scope, path } = binding; @@ -130,7 +130,9 @@ export default class Renamer { } } - const blockToTraverse = block || scope.block; + const blockToTraverse = process.env.BABEL_8_BREAKING + ? scope.block + : (arguments[0] as t.Pattern | t.Scopable) || scope.block; if (blockToTraverse?.type === "SwitchStatement") { // discriminant is not part of current scope, should be skipped. blockToTraverse.cases.forEach(c => { @@ -140,7 +142,11 @@ export default class Renamer { scope.traverse(blockToTraverse, renameVisitor, this); } - if (!block) { + if (process.env.BABEL_8_BREAKING) { + scope.removeOwnBinding(oldName); + scope.bindings[newName] = binding; + this.binding.identifier.name = newName; + } else if (!arguments[0]) { scope.removeOwnBinding(oldName); scope.bindings[newName] = binding; this.binding.identifier.name = newName;