From b69dc51be0cdb6a959f9d9b43aa085449c6dcda9 Mon Sep 17 00:00:00 2001 From: Brian Ng Date: Mon, 23 Jan 2017 10:45:57 -0600 Subject: [PATCH] Fix missing parens when function expressions is tag (#5193) --- .../babel-generator/src/node/parentheses.js | 22 ++++++++++--------- .../tagged-template-expression/actual.js | 2 ++ .../tagged-template-expression/expected.js | 2 ++ 3 files changed, 16 insertions(+), 10 deletions(-) create mode 100644 packages/babel-generator/test/fixtures/parentheses/tagged-template-expression/actual.js create mode 100644 packages/babel-generator/test/fixtures/parentheses/tagged-template-expression/expected.js diff --git a/packages/babel-generator/src/node/parentheses.js b/packages/babel-generator/src/node/parentheses.js index e6424aced6..4da106ce99 100644 --- a/packages/babel-generator/src/node/parentheses.js +++ b/packages/babel-generator/src/node/parentheses.js @@ -170,16 +170,14 @@ export function FunctionExpression(node: Object, parent: Object, printStack: Arr } export function ArrowFunctionExpression(node: Object, parent: Object): boolean { - // export default (function () {}); - if (t.isExportDeclaration(parent)) { - return true; - } - - if (t.isBinaryExpression(parent) || t.isLogicalExpression(parent)) { - return true; - } - - if (t.isUnaryExpression(parent)) { + if ( + // export default (function () {}); + t.isExportDeclaration(parent) || + t.isBinaryExpression(parent) || + t.isLogicalExpression(parent) || + t.isUnaryExpression(parent) || + t.isTaggedTemplateExpression(parent) + ) { return true; } @@ -225,6 +223,10 @@ function isFirstInStatement(printStack: Array, { return true; } + if (t.isTaggedTemplateExpression(parent)) { + return true; + } + if (considerDefaultExports && t.isExportDefaultDeclaration(parent, { declaration: node })) { return true; } diff --git a/packages/babel-generator/test/fixtures/parentheses/tagged-template-expression/actual.js b/packages/babel-generator/test/fixtures/parentheses/tagged-template-expression/actual.js new file mode 100644 index 0000000000..8a19f04a89 --- /dev/null +++ b/packages/babel-generator/test/fixtures/parentheses/tagged-template-expression/actual.js @@ -0,0 +1,2 @@ +(() => {})``; +(function(){}``); diff --git a/packages/babel-generator/test/fixtures/parentheses/tagged-template-expression/expected.js b/packages/babel-generator/test/fixtures/parentheses/tagged-template-expression/expected.js new file mode 100644 index 0000000000..f47cd2e9af --- /dev/null +++ b/packages/babel-generator/test/fixtures/parentheses/tagged-template-expression/expected.js @@ -0,0 +1,2 @@ +(() => {})``; +(function () {})``; \ No newline at end of file