Repository: jlongster/prettier (js)

Issue:
Unnecessary parentheses in jsx
Input:
```js
const tabs = [
    {
        title: 'General Info',
        content: (
            <GeneralForm
                long-attribute="i-need-long-value-here"
                onSave={ onSave }
                onCancel={ onCancel }
                countries={ countries }
            />),
    },
];
```

Output:
```js
const tabs = [
    {
        title: "General Info",
        content: (
            (
                <GeneralForm
                    long-attribute="i-need-long-value-here"
                    onSave={onSave}
                    onCancel={onCancel}
                    countries={countries}
                />
            )
        )
    }
];
```

https://jlongster.github.io/prettier/#%7B%22content%22%3A%22const%20tabs%20%3D%20%5B%5Cn%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20title%3A%20'General%20Info'%2C%5Cn%20%20%20%20%20%20%20%20content%3A%20(%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%3CGeneralForm%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20long-attribute%3D%5C%22i-need-long-value-here%5C%22%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onSave%3D%7B%20onSave%20%7D%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onCancel%3D%7B%20onCancel%20%7D%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20countries%3D%7B%20countries%20%7D%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%2F%3E)%2C%5Cn%20%20%20%20%7D%2C%5Cn%5D%3B%22%2C%22options%22%3A%7B%22printWidth%22%3A120%2C%22tabWidth%22%3A4%2C%22singleQuote%22%3Afalse%2C%22trailingComma%22%3Afalse%2C%22bracketSpacing%22%3Atrue%2C%22doc%22%3Afalse%7D%7D

Pull request description:
565 jsx parentheses fix
This one should fix #565 🤞🚀.

Patch:
diff --git a/src/printer.js b/src/printer.js
index 229e5bfa0..a88261142 100644
--- a/src/printer.js
+++ b/src/printer.js
@@ -2624,6 +2624,7 @@ function shouldPrintSameLine(node) {
     type === "CallExpression" ||
     type === "FunctionExpression" ||
     type === "Identifier" ||
+    type === "JSXElement" ||
     type === "Literal" ||
     type === "MemberExpression" ||
     type === "NewExpression" ||


Test patch:
diff --git a/tests/jsx/__snapshots__/jsfmt.spec.js.snap b/tests/jsx/__snapshots__/jsfmt.spec.js.snap
index c3a386b49..130a922b9 100644
--- a/tests/jsx/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/jsx/__snapshots__/jsfmt.spec.js.snap
@@ -193,3 +193,34 @@ exports[`test quotes.js 1`] = `
 <div id={\"\'\\\"&quot;<>&amp;quot;\"} />;
 "
 `;
+
+exports[`test object-property.js 1`] = `
+"const tabs = [
+  {
+    title: \"General Info\",
+    content: (
+      <GeneralForm
+        long-attribute=\"i-need-long-value-here\"
+        onSave={ onSave }
+        onCancel={ onCancel }
+        countries={ countries }
+      />
+    )
+  }
+];
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+const tabs = [
+  {
+    title: \"General Info\",
+    content: (
+      <GeneralForm
+        long-attribute=\"i-need-long-value-here\"
+        onSave={onSave}
+        onCancel={onCancel}
+        countries={countries}
+      />
+    )
+  }
+];
+"
+`;
diff --git a/tests/jsx/object-property.js b/tests/jsx/object-property.js
new file mode 100644
index 000000000..b133d5242
--- /dev/null
+++ b/tests/jsx/object-property.js
@@ -0,0 +1,13 @@
+const tabs = [
+  {
+    title: "General Info",
+    content: (
+      <GeneralForm
+        long-attribute="i-need-long-value-here"
+        onSave={ onSave }
+        onCancel={ onCancel }
+        countries={ countries }
+      />
+    )
+  }
+];