From 31b05060409107caa5737f90bdf79fc3538c0a2d Mon Sep 17 00:00:00 2001 From: liuxingbaoyu <30521560+liuxingbaoyu@users.noreply.github.com> Date: Sat, 15 Feb 2020 01:19:32 +0800 Subject: [PATCH] fix: @babel/traverse can't use path.remove() with noScope (#11136) --- packages/babel-traverse/src/path/removal.js | 4 +++- packages/babel-traverse/test/removal.js | 12 ++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/babel-traverse/src/path/removal.js b/packages/babel-traverse/src/path/removal.js index 9ddf0a201448..85123863762f 100644 --- a/packages/babel-traverse/src/path/removal.js +++ b/packages/babel-traverse/src/path/removal.js @@ -7,7 +7,9 @@ export function remove() { this._assertUnremoved(); this.resync(); - this._removeFromScope(); + if (!this.opts || !this.opts.noScope) { + this._removeFromScope(); + } if (this._callRemovalHooks()) { this._markRemoved(); diff --git a/packages/babel-traverse/test/removal.js b/packages/babel-traverse/test/removal.js index f500eb37ddd0..46ad1a438ca9 100644 --- a/packages/babel-traverse/test/removal.js +++ b/packages/babel-traverse/test/removal.js @@ -33,4 +33,16 @@ describe("removal", function() { expect(generateCode(rootPath)).toBe("x = () => {};"); }); }); + + it("remove with noScope", function() { + const ast = parse("a=1"); + traverse(ast, { + AssignmentExpression: function(path) { + path.remove(); + }, + noScope: true, + }); + + expect(generate(ast).code).toBe(""); + }); });