From 32d4200f6037d83f8ab1ca08de155e519e0f9c95 Mon Sep 17 00:00:00 2001 From: James Long Date: Fri, 30 Dec 2016 14:25:52 -0500 Subject: [PATCH] Wrap class expressions in parens if needed --- src/fast-path.js | 6 ++- .../__snapshots__/jsfmt.spec.js.snap | 40 +++++++++---------- 2 files changed, 25 insertions(+), 21 deletions(-) diff --git a/src/fast-path.js b/src/fast-path.js index 9c64f073a..8845d6acd 100644 --- a/src/fast-path.js +++ b/src/fast-path.js @@ -362,6 +362,9 @@ FPp.needsParens = function(assumeExpressionContext) { return isBinary(parent); + case "ClassExpression": + return parent.type === "ExpressionStatement"; + case "ObjectExpression": if (parent.type === "ArrowFunctionExpression" && name === "body") { @@ -435,7 +438,8 @@ function containsCallExpression(node) { FPp.canBeFirstInStatement = function() { var node = this.getNode(); return !n.FunctionExpression.check(node) - && !n.ObjectExpression.check(node); + && !n.ObjectExpression.check(node) + && !n.ClassExpression.check(node); }; FPp.firstInStatement = function() { diff --git a/tests/getters_and_setters_enabled/__snapshots__/jsfmt.spec.js.snap b/tests/getters_and_setters_enabled/__snapshots__/jsfmt.spec.js.snap index ca2c8ab55..b41bd88e8 100644 --- a/tests/getters_and_setters_enabled/__snapshots__/jsfmt.spec.js.snap +++ b/tests/getters_and_setters_enabled/__snapshots__/jsfmt.spec.js.snap @@ -412,52 +412,52 @@ class Base { this.x = value; } } -class extends Base { +(class extends Base { get x(): B { return b; } -}; -class extends Base { +}); +(class extends Base { set x(value: B): void { } -}; -class extends Base { +}); +(class extends Base { get x(): C { return c; } set x(value: A): void { } -}; -class extends Base { +}); +(class extends Base { set pos(value: B): void { } -}; -class extends Base { +}); +(class extends Base { get pos(): C { return c; } -}; -class extends Base { +}); +(class extends Base { get neg(): B { return b; } -}; -class extends Base { +}); +(class extends Base { set neg(value: A): void { } -}; -class extends Base { +}); +(class extends Base { get: C; -}; -class extends Base { +}); +(class extends Base { set: A; -}; -class extends Base { +}); +(class extends Base { getset: B; -}; +}); " `;