From 7cff189dd8bc2fb4c5a9bee83a903ae6c5807d49 Mon Sep 17 00:00:00 2001 From: Lucas Duailibe Date: Thu, 7 Dec 2017 02:48:11 -0200 Subject: [PATCH] Print trailing comma when last arg is arrow (#3428) --- src/printer.js | 8 +++- .../__snapshots__/jsfmt.spec.js.snap | 42 +++++++++++++++++++ tests/trailing_comma/function-calls.js | 7 ++++ 3 files changed, 55 insertions(+), 2 deletions(-) diff --git a/src/printer.js b/src/printer.js index e1769761..d2b3e790 100644 --- a/src/printer.js +++ b/src/printer.js @@ -3093,6 +3093,8 @@ function printArgumentsList(path, options, print) { const somePrintedArgumentsWillBreak = printedArguments.some(willBreak); + const maybeTrailingComma = shouldPrintComma(options, "all") ? "," : ""; + return concat([ somePrintedArgumentsWillBreak ? breakParent : "", conditionalGroup( @@ -3102,7 +3104,9 @@ function printArgumentsList(path, options, print) { indent(concat(["(", softline, concat(printedExpanded)])), concat(["(", concat(printedExpanded)]) ), - somePrintedArgumentsWillBreak ? softline : "", + somePrintedArgumentsWillBreak + ? concat([ifBreak(maybeTrailingComma), softline]) + : "", ")" ]), shouldGroupFirst @@ -3124,7 +3128,7 @@ function printArgumentsList(path, options, print) { concat([ "(", indent(concat([line, concat(printedArguments)])), - shouldPrintComma(options, "all") ? "," : "", + maybeTrailingComma, line, ")" ]), diff --git a/tests/trailing_comma/__snapshots__/jsfmt.spec.js.snap b/tests/trailing_comma/__snapshots__/jsfmt.spec.js.snap index 8649f223..69ccc701 100644 --- a/tests/trailing_comma/__snapshots__/jsfmt.spec.js.snap +++ b/tests/trailing_comma/__snapshots__/jsfmt.spec.js.snap @@ -129,6 +129,13 @@ a( ); a('value', 'value2', a('long-nested-value', 'long-nested-value2', 'long-nested-value3')); + +a.b().c( + { + d, + }, + () => {} +); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ const a = (param1, param2, param3) => {}; @@ -146,6 +153,13 @@ a( a("long-nested-value", "long-nested-value2", "long-nested-value3") ); +a.b().c( + { + d + }, + () => {} +); + `; exports[`function-calls.js 2`] = ` @@ -160,6 +174,13 @@ a( ); a('value', 'value2', a('long-nested-value', 'long-nested-value2', 'long-nested-value3')); + +a.b().c( + { + d, + }, + () => {} +); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ const a = (param1, param2, param3) => {}; @@ -177,6 +198,13 @@ a( a("long-nested-value", "long-nested-value2", "long-nested-value3"), ); +a.b().c( + { + d, + }, + () => {}, +); + `; exports[`function-calls.js 3`] = ` @@ -191,6 +219,13 @@ a( ); a('value', 'value2', a('long-nested-value', 'long-nested-value2', 'long-nested-value3')); + +a.b().c( + { + d, + }, + () => {} +); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ const a = (param1, param2, param3) => {}; @@ -208,6 +243,13 @@ a( a("long-nested-value", "long-nested-value2", "long-nested-value3") ); +a.b().c( + { + d, + }, + () => {} +); + `; exports[`jsx.js 1`] = ` diff --git a/tests/trailing_comma/function-calls.js b/tests/trailing_comma/function-calls.js index 86e20547..61c02117 100644 --- a/tests/trailing_comma/function-calls.js +++ b/tests/trailing_comma/function-calls.js @@ -9,3 +9,10 @@ a( ); a('value', 'value2', a('long-nested-value', 'long-nested-value2', 'long-nested-value3')); + +a.b().c( + { + d, + }, + () => {} +);