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(""); + }); });