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)