From 1d0ff341fd161315cda239642400566d2b39c9a5 Mon Sep 17 00:00:00 2001 From: Logan Smyth Date: Sat, 16 Jul 2016 15:17:46 -0700 Subject: [PATCH] Skip mutating the 'ignore' flag when printing. --- packages/babel-generator/src/printer.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/babel-generator/src/printer.js b/packages/babel-generator/src/printer.js index 6ecd82530d..26daff2f36 100644 --- a/packages/babel-generator/src/printer.js +++ b/packages/babel-generator/src/printer.js @@ -20,6 +20,7 @@ export default class Printer { _printedCommentStarts: Object; _parenPushNewlineState: ?Object; + _printedComments: WeakSet = new WeakSet(); /** * Increment indent size. @@ -484,8 +485,12 @@ export default class Printer { _printComment(comment) { if (!this._shouldPrintComment(comment)) return; + // Some plugins use this to mark comments as removed using the AST-root 'comments' property, + // where they can't manually mutate the AST node comment lists. if (comment.ignore) return; - comment.ignore = true; + + if (this._printedComments.has(comment)) return; + this._printedComments.add(comment); if (comment.start != null) { if (this._printedCommentStarts[comment.start]) return;