From 429840dc2b06ea1c0bc7bbcf970298399fb78582 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=BB=E6=96=87=E9=BE=99?= Date: Tue, 26 May 2020 16:05:12 -0500 Subject: [PATCH] scope.rename() missing identifier in VariableDeclarator (#11595) --- packages/babel-traverse/src/scope/lib/renamer.js | 3 ++- .../fixtures/rename/function-body-declaration/input.js | 7 +++++++ .../rename/function-body-declaration/options.json | 3 +++ .../fixtures/rename/function-body-declaration/output.js | 7 +++++++ .../fixtures/rename/function-body-declaration/plugin.js | 9 +++++++++ 5 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 packages/babel-traverse/test/fixtures/rename/function-body-declaration/input.js create mode 100644 packages/babel-traverse/test/fixtures/rename/function-body-declaration/options.json create mode 100644 packages/babel-traverse/test/fixtures/rename/function-body-declaration/output.js create mode 100644 packages/babel-traverse/test/fixtures/rename/function-body-declaration/plugin.js diff --git a/packages/babel-traverse/src/scope/lib/renamer.js b/packages/babel-traverse/src/scope/lib/renamer.js index 4fb0a5fa180c..b15285e29caf 100644 --- a/packages/babel-traverse/src/scope/lib/renamer.js +++ b/packages/babel-traverse/src/scope/lib/renamer.js @@ -20,7 +20,8 @@ const renameVisitor = { } }, - "AssignmentExpression|Declaration"(path, state) { + "AssignmentExpression|Declaration|VariableDeclarator"(path, state) { + if (path.isVariableDeclaration()) return; const ids = path.getOuterBindingIdentifiers(); for (const name in ids) { diff --git a/packages/babel-traverse/test/fixtures/rename/function-body-declaration/input.js b/packages/babel-traverse/test/fixtures/rename/function-body-declaration/input.js new file mode 100644 index 000000000000..7ab6bdb1f2fd --- /dev/null +++ b/packages/babel-traverse/test/fixtures/rename/function-body-declaration/input.js @@ -0,0 +1,7 @@ +function c(b) { + var a = b + 1, + a = a + 1, + a = a + 1; + + return a; +} diff --git a/packages/babel-traverse/test/fixtures/rename/function-body-declaration/options.json b/packages/babel-traverse/test/fixtures/rename/function-body-declaration/options.json new file mode 100644 index 000000000000..14af0e5feac8 --- /dev/null +++ b/packages/babel-traverse/test/fixtures/rename/function-body-declaration/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["./plugin"] +} diff --git a/packages/babel-traverse/test/fixtures/rename/function-body-declaration/output.js b/packages/babel-traverse/test/fixtures/rename/function-body-declaration/output.js new file mode 100644 index 000000000000..66584088b24c --- /dev/null +++ b/packages/babel-traverse/test/fixtures/rename/function-body-declaration/output.js @@ -0,0 +1,7 @@ +function c(b) { + var _a = b + 1, + _a = _a + 1, + _a = _a + 1; + + return _a; +} diff --git a/packages/babel-traverse/test/fixtures/rename/function-body-declaration/plugin.js b/packages/babel-traverse/test/fixtures/rename/function-body-declaration/plugin.js new file mode 100644 index 000000000000..660e360ace48 --- /dev/null +++ b/packages/babel-traverse/test/fixtures/rename/function-body-declaration/plugin.js @@ -0,0 +1,9 @@ +module.exports = function() { + return { + visitor: { + Scope(path) { + path.scope.rename("a", "_a"); + } + } + }; +}