Skip to content

Commit

Permalink
[babel 8] Remove block argument from Scope#rename
Browse files Browse the repository at this point in the history
  • Loading branch information
nicolo-ribaudo committed Dec 16, 2022
1 parent 87e48e7 commit 05c1c39
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 6 deletions.
15 changes: 12 additions & 3 deletions packages/babel-traverse/src/scope/index.ts
Expand Up @@ -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]);
}
}

Expand Down
12 changes: 9 additions & 3 deletions packages/babel-traverse/src/scope/lib/renamer.ts
Expand Up @@ -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;

Expand All @@ -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 => {
Expand All @@ -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;
Expand Down

0 comments on commit 05c1c39

Please sign in to comment.