From 6ccf5c0246970557426220008d2f950e67101181 Mon Sep 17 00:00:00 2001 From: Lucas Duailibe Date: Thu, 26 Oct 2017 15:32:57 -0200 Subject: [PATCH] fix(jsx): Don't inline trailing } for arrow functions attributes (#3110) --- src/printer.js | 11 ++++- tests/arrows/__snapshots__/jsfmt.spec.js.snap | 9 ++-- tests/jsx/__snapshots__/jsfmt.spec.js.snap | 42 +++++++++++++++++++ tests/jsx/expression.js | 17 ++++++++ 4 files changed, 75 insertions(+), 4 deletions(-) diff --git a/src/printer.js b/src/printer.js index d57947a6..9807820b 100644 --- a/src/printer.js +++ b/src/printer.js @@ -1731,8 +1731,17 @@ function genericPrintNoParens(path, options, print, args) { isBinaryish(n.expression))); if (shouldInline) { + const printExpression = + n.expression.type !== "ArrowFunctionExpression" + ? print + : p => print(p, { expandLastArg: true }); return group( - concat(["{", path.call(print, "expression"), lineSuffixBoundary, "}"]) + concat([ + "{", + path.call(printExpression, "expression"), + lineSuffixBoundary, + "}" + ]) ); } diff --git a/tests/arrows/__snapshots__/jsfmt.spec.js.snap b/tests/arrows/__snapshots__/jsfmt.spec.js.snap index 4791bd03..065c3827 100644 --- a/tests/arrows/__snapshots__/jsfmt.spec.js.snap +++ b/tests/arrows/__snapshots__/jsfmt.spec.js.snap @@ -193,7 +193,8 @@ function render() { progress: Math.round( 100 * e.nativeEvent.loaded / e.nativeEvent.total ) - })} + }) + } /> ); @@ -208,7 +209,8 @@ function render() { progress: Math.round( 100 * e.nativeEvent.loaded / e.nativeEvent.total ) - })} + }) + } /> ); @@ -223,7 +225,8 @@ function render() { progress: Math.round( 100 * e.nativeEvent.loaded / e.nativeEvent.total ) - })} + }) + } /> ); diff --git a/tests/jsx/__snapshots__/jsfmt.spec.js.snap b/tests/jsx/__snapshots__/jsfmt.spec.js.snap index 49b42843..96fcb599 100644 --- a/tests/jsx/__snapshots__/jsfmt.spec.js.snap +++ b/tests/jsx/__snapshots__/jsfmt.spec.js.snap @@ -346,6 +346,23 @@ exports[`expression.js 1`] = ` test }/>; + + doLogClick("short", "short", data)} +/>; + + + doLogClick("long_name_long_name_long_name", "long_name_long_name_long_name", data) + } +/>; + + { + doLogClick("long_name_long_name_long_name", "long_name_long_name_long_name", data) + }} +/>; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ test} />; + doLogClick("short", "short", data)} +/>; + + + doLogClick( + "long_name_long_name_long_name", + "long_name_long_name_long_name", + data + ) + } +/>; + + { + doLogClick( + "long_name_long_name_long_name", + "long_name_long_name_long_name", + data + ); + }} +/>; + `; exports[`flow_fix_me.js 1`] = ` diff --git a/tests/jsx/expression.js b/tests/jsx/expression.js index 5dcf584e..c86a3cb2 100644 --- a/tests/jsx/expression.js +++ b/tests/jsx/expression.js @@ -64,3 +64,20 @@ test }/>; + + doLogClick("short", "short", data)} +/>; + + + doLogClick("long_name_long_name_long_name", "long_name_long_name_long_name", data) + } +/>; + + { + doLogClick("long_name_long_name_long_name", "long_name_long_name_long_name", data) + }} +/>;