diff --git a/src/printer.js b/src/printer.js index 493f48919797..aaa21fe7242c 100644 --- a/src/printer.js +++ b/src/printer.js @@ -2010,6 +2010,11 @@ function printJSXElement(path, options, print) { children.push(hardline); } } else { + // ensure sibling `JSXElement`s are on separate lines (strings have no "type") + const prev = util.getLast(children); + if (prev && prev.type !== "line") { + children.push(softline); + } children.push(print(childPath)); } }, diff --git a/tests/prettier/__snapshots__/jsfmt.spec.js.snap b/tests/prettier/__snapshots__/jsfmt.spec.js.snap index 6a20b872e989..f7b70281bf33 100644 --- a/tests/prettier/__snapshots__/jsfmt.spec.js.snap +++ b/tests/prettier/__snapshots__/jsfmt.spec.js.snap @@ -146,12 +146,18 @@ const render5 = ({ styles }) =>
Keep it on one line.
; const render6 = ({ styles }) => (
ddd d dd d d dddd dddd hello
-
ddd d dd d d dddd dddd hello
+
ddd d dd d d dddd dddd hello
goodbye
ddd d dd d d dddd dddd hello
hello
) +const render7 = () => +
+ Break each elem onto its own line. +
+
+ const notJSX = (aaaaaaaaaaaaaaaaa, bbbbbbbbbbb) => this.someLongCallWithParams(aaaaaa, bbbbbbb).anotherLongCallWithParams(cccccccccccc, dddddddddddddddddddddd) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ const render1 = ({ styles }) => ( @@ -196,6 +202,7 @@ const render6 = ({ styles }) => ( > ddd d dd d d dddd dddd hello
+ goodbye
( attr4 > ddd d dd d d dddd dddd hello -
hello +
+ hello ); +const render7 = () => ( +
+ + Break each elem onto its own line. + +
+
+
+); + const notJSX = (aaaaaaaaaaaaaaaaa, bbbbbbbbbbb) => this .someLongCallWithParams(aaaaaa, bbbbbbb) diff --git a/tests/prettier/jsx-stateless-arrow-fn.js b/tests/prettier/jsx-stateless-arrow-fn.js index 41ba4043ab40..ed5cbf4c2081 100644 --- a/tests/prettier/jsx-stateless-arrow-fn.js +++ b/tests/prettier/jsx-stateless-arrow-fn.js @@ -17,10 +17,16 @@ const render5 = ({ styles }) =>
Keep it on one line.
; const render6 = ({ styles }) => (
ddd d dd d d dddd dddd hello
-
ddd d dd d d dddd dddd hello
+
ddd d dd d d dddd dddd hello
goodbye
ddd d dd d d dddd dddd hello
hello
) +const render7 = () => +
+ Break each elem onto its own line. +
+
+ const notJSX = (aaaaaaaaaaaaaaaaa, bbbbbbbbbbb) => this.someLongCallWithParams(aaaaaa, bbbbbbb).anotherLongCallWithParams(cccccccccccc, dddddddddddddddddddddd)