From 48812eab6c13432c6876be449397244afdab07e0 Mon Sep 17 00:00:00 2001 From: liuxingbaoyu <30521560+liuxingbaoyu@users.noreply.github.com> Date: Fri, 14 Feb 2020 12:49:35 +0800 Subject: [PATCH] fix @babel/traverse can't use path.remove() with noScope --- 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(""); + }); });