From 18c8d97c3d872735097d9610bc2c8a02155a40a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Mon, 27 Nov 2017 23:31:24 +0100 Subject: [PATCH] UpdateExpressions as callees must be parenthesized (#6922) --- packages/babel-generator/src/node/parentheses.js | 8 ++++++-- .../test/fixtures/parentheses/update-expression/actual.js | 8 ++++++++ .../fixtures/parentheses/update-expression/expected.js | 6 ++++++ 3 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 packages/babel-generator/test/fixtures/parentheses/update-expression/actual.js create mode 100644 packages/babel-generator/test/fixtures/parentheses/update-expression/expected.js diff --git a/packages/babel-generator/src/node/parentheses.js b/packages/babel-generator/src/node/parentheses.js index 9c1322881c..e78391c2bd 100644 --- a/packages/babel-generator/src/node/parentheses.js +++ b/packages/babel-generator/src/node/parentheses.js @@ -38,9 +38,13 @@ export function NullableTypeAnnotation(node: Object, parent: Object): boolean { export { NullableTypeAnnotation as FunctionTypeAnnotation }; export function UpdateExpression(node: Object, parent: Object): boolean { - // (foo++).test() return ( - (t.isMemberExpression(parent) && parent.object === node) || + // (foo++).test(), (foo++)[0] + t.isMemberExpression(parent, { object: node }) || + // (foo++)() + t.isCallExpression(parent, { callee: node }) || + // new (foo++)() + t.isNewExpression(parent, { callee: node }) || isClassExtendsClause(node, parent) ); } diff --git a/packages/babel-generator/test/fixtures/parentheses/update-expression/actual.js b/packages/babel-generator/test/fixtures/parentheses/update-expression/actual.js new file mode 100644 index 0000000000..f3d794c2c9 --- /dev/null +++ b/packages/babel-generator/test/fixtures/parentheses/update-expression/actual.js @@ -0,0 +1,8 @@ +(++a)(); +(a++)(); + +new (++a)(); +new (a++)(); + +new (++a); +new (a++); diff --git a/packages/babel-generator/test/fixtures/parentheses/update-expression/expected.js b/packages/babel-generator/test/fixtures/parentheses/update-expression/expected.js new file mode 100644 index 0000000000..0c30f7b869 --- /dev/null +++ b/packages/babel-generator/test/fixtures/parentheses/update-expression/expected.js @@ -0,0 +1,6 @@ +(++a)(); +(a++)(); +new (++a)(); +new (a++)(); +new (++a)(); +new (a++)(); \ No newline at end of file