From b77703a942ff22b0427705815faa6bcaeeae732f Mon Sep 17 00:00:00 2001 From: Christopher Chedeau Date: Sun, 22 Jan 2017 14:33:04 -0800 Subject: [PATCH] Fix class inside of binary expression missing parenthesis (#397) Fixes #395 --- src/fast-path.js | 1 + tests/classes/__snapshots__/jsfmt.spec.js.snap | 13 +++++++++++++ tests/classes/binary.js | 4 ++++ 3 files changed, 18 insertions(+) create mode 100644 tests/classes/binary.js diff --git a/src/fast-path.js b/src/fast-path.js index 74e994d07..990d7ed0c 100644 --- a/src/fast-path.js +++ b/src/fast-path.js @@ -405,6 +405,7 @@ FPp.needsParens = function(assumeExpressionContext) { case "ClassExpression": switch (parent.type) { + case "BinaryExpression": case "ExportDefaultDeclaration": case "ExpressionStatement": return true; diff --git a/tests/classes/__snapshots__/jsfmt.spec.js.snap b/tests/classes/__snapshots__/jsfmt.spec.js.snap index 4644dbbd2..d2de13bf1 100644 --- a/tests/classes/__snapshots__/jsfmt.spec.js.snap +++ b/tests/classes/__snapshots__/jsfmt.spec.js.snap @@ -74,6 +74,19 @@ new E().x; " `; +exports[`test binary.js 1`] = ` +"(class {}) + 1; +(class a {}) + 1; +(class extends b {}) + 1; +(class a extends b {}) + 1; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +(class {}) + 1; +(class a {}) + 1; +(class extends b {}) + 1; +(class a extends b {}) + 1; +" +`; + exports[`test class_shapes.js 1`] = ` "/* @flow */ diff --git a/tests/classes/binary.js b/tests/classes/binary.js new file mode 100644 index 000000000..f60f9c8f7 --- /dev/null +++ b/tests/classes/binary.js @@ -0,0 +1,4 @@ +(class {}) + 1; +(class a {}) + 1; +(class extends b {}) + 1; +(class a extends b {}) + 1;