From 03f49bb2b2e31d980d2437989b14568ea0d2b19a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Wed, 24 Aug 2022 15:47:26 +0200 Subject: [PATCH] Print necessary parentheses in generator --- packages/babel-generator/src/generators/expressions.ts | 7 +++---- .../input.js | 6 +++++- .../output.js | 6 +++++- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/packages/babel-generator/src/generators/expressions.ts b/packages/babel-generator/src/generators/expressions.ts index 9ff9c6db032e..10b382f4e3ab 100644 --- a/packages/babel-generator/src/generators/expressions.ts +++ b/packages/babel-generator/src/generators/expressions.ts @@ -131,14 +131,13 @@ function isDecoratorMemberExpression( function shouldParenthesizeDecoratorExpression( node: t.Expression | t.Super | t.V8IntrinsicIdentifier, ) { - if (node.type === "CallExpression") { - node = node.callee; - } if (node.type === "ParenthesizedExpression") { // We didn't check extra?.parenthesized here because we don't track decorators in needsParen return false; } - return !isDecoratorMemberExpression(node); + return !isDecoratorMemberExpression( + node.type === "CallExpression" ? node.callee : node, + ); } export function Decorator(this: Printer, node: t.Decorator) { diff --git a/packages/babel-generator/test/fixtures/decorators/decorator-parenthesized-expression-createParenthesizedExpression/input.js b/packages/babel-generator/test/fixtures/decorators/decorator-parenthesized-expression-createParenthesizedExpression/input.js index 8cec169bc925..52a448176dfa 100644 --- a/packages/babel-generator/test/fixtures/decorators/decorator-parenthesized-expression-createParenthesizedExpression/input.js +++ b/packages/babel-generator/test/fixtures/decorators/decorator-parenthesized-expression-createParenthesizedExpression/input.js @@ -9,7 +9,6 @@ class C extends class {} { @(this.dec) @(super.dec) @(new DecFactory) - @(decs[three])() p; } @@ -20,6 +19,11 @@ class C extends class {} { p; } + class ShouldAddParens { + @(decs[three])() + p; + } + class WillPreserveParens { @(decs) @(decs.one) diff --git a/packages/babel-generator/test/fixtures/decorators/decorator-parenthesized-expression-createParenthesizedExpression/output.js b/packages/babel-generator/test/fixtures/decorators/decorator-parenthesized-expression-createParenthesizedExpression/output.js index a3e2fb794feb..05b8e9379125 100644 --- a/packages/babel-generator/test/fixtures/decorators/decorator-parenthesized-expression-createParenthesizedExpression/output.js +++ b/packages/babel-generator/test/fixtures/decorators/decorator-parenthesized-expression-createParenthesizedExpression/output.js @@ -10,7 +10,6 @@ class C extends class {} { @(this.dec) @(super.dec) @(new DecFactory()) - @(decs[three])() p; } @@ -21,6 +20,11 @@ class C extends class {} { p; } + class ShouldAddParens { + @((decs[three])()) + p; + } + class WillPreserveParens { @(decs) @(decs.one)