From e822c8a2d196ac1d4563095e3e0b24dd9721c287 Mon Sep 17 00:00:00 2001 From: liuxingbaoyu <30521560+liuxingbaoyu@users.noreply.github.com> Date: Thu, 13 Feb 2020 10:48:45 +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 | 11 +++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/babel-traverse/src/path/removal.js b/packages/babel-traverse/src/path/removal.js index 9ddf0a201448..83e792e9be62 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..d6997a21c83b 100644 --- a/packages/babel-traverse/test/removal.js +++ b/packages/babel-traverse/test/removal.js @@ -33,4 +33,15 @@ 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(); + }, + }); + + expect(generate(ast).code).toBe(""); + }); });