From fe5c664710d392eaa612b3aacf458c2275440adb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Tue, 8 Nov 2022 15:27:18 +0100 Subject: [PATCH] Fix if there is a previous token --- packages/babel-generator/src/printer.ts | 8 +++++-- .../inner-comments-auto-parens/input.js | 3 +++ .../inner-comments-auto-parens/output.js | 2 ++ packages/babel-generator/test/index.js | 21 ------------------- 4 files changed, 11 insertions(+), 23 deletions(-) create mode 100644 packages/babel-generator/test/fixtures/comments/inner-comments-auto-parens/input.js create mode 100644 packages/babel-generator/test/fixtures/comments/inner-comments-auto-parens/output.js diff --git a/packages/babel-generator/src/printer.ts b/packages/babel-generator/src/printer.ts index de26ac5c91a3..764016365bea 100644 --- a/packages/babel-generator/src/printer.ts +++ b/packages/babel-generator/src/printer.ts @@ -587,6 +587,8 @@ class Printer { ) { if (!node) return; + this._endsWithInnerRaw = false; + const nodeType = node.type; const format = this.format; @@ -635,9 +637,11 @@ class Printer { } else { shouldPrintParens = needsParens(node, parent, this._printStack); } - if (shouldPrintParens) this.token("("); + if (shouldPrintParens) { + this.token("("); + this._endsWithInnerRaw = false; + } - this._endsWithInnerRaw = false; this._lastCommentLine = 0; this._printLeadingComments(node, parent); diff --git a/packages/babel-generator/test/fixtures/comments/inner-comments-auto-parens/input.js b/packages/babel-generator/test/fixtures/comments/inner-comments-auto-parens/input.js new file mode 100644 index 000000000000..a609b593e45a --- /dev/null +++ b/packages/babel-generator/test/fixtures/comments/inner-comments-auto-parens/input.js @@ -0,0 +1,3 @@ +1 + ((/* c */) => {}); + +(function /* c */ () {}); diff --git a/packages/babel-generator/test/fixtures/comments/inner-comments-auto-parens/output.js b/packages/babel-generator/test/fixtures/comments/inner-comments-auto-parens/output.js new file mode 100644 index 000000000000..9d47d48492d4 --- /dev/null +++ b/packages/babel-generator/test/fixtures/comments/inner-comments-auto-parens/output.js @@ -0,0 +1,2 @@ +1 + (( /* c */) => {}); +(function /* c */ () {}); \ No newline at end of file diff --git a/packages/babel-generator/test/index.js b/packages/babel-generator/test/index.js index 0229df86ac63..a5493e1ee858 100644 --- a/packages/babel-generator/test/index.js +++ b/packages/babel-generator/test/index.js @@ -1055,27 +1055,6 @@ describe("programmatic generation", function () { const output = generate(exportDefaultDeclaration).code; expect(output).toBe("export default (function () {});"); }); - - it("inner comments are not printed after leading parenthesis", () => { - const functionExpression = t.functionExpression( - null, - [], - t.blockStatement([]), - ); - functionExpression.innerComments = [ - { - type: "CommentBlock", - value: "foo", - }, - ]; - const stmt = t.expressionStatement(functionExpression); - const output = generate(stmt).code; - expect(output).toMatchInlineSnapshot(` - "(function - /*foo*/ - () {});" - `); - }); }); describe("class expressions", () => {