Keep parentheses of SequenceExpression for ExportDefaultDeclaration (#7491)

* Fix export default `SequenceExpression`

* Add more parser

* Add change log

* Fix  logic

* Rename that function

* Add a branch
This commit is contained in:
fisker Cheung authored and GitHub committed 2020-01-31 13:28:08 +03:00
1 parent a1ce84a13b
commit 340951f045
5 files changed
+42 -4

No files matched your search

@@ -0,0 +1,15 @@
#### Keep parentheses of `SequenceExpression` for `ExportDefaultDeclaration` ([#7491](https://github.com/prettier/prettier/pull/7491) by [@fisker](https://github.com/fisker))
Remove parentheses of `SequenceExpression` breaks `ExportDefaultDeclaration`.
<!-- prettier-ignore -->
```jsx
// Input
export default (1, 2);
// Prettier stable
export default 1, 2;
// Prettier master
export default (1, 2);
```
+8 -4
View File
@@ -172,11 +172,15 @@ function needsParens(path, options) {
return true;
}
// `export default function` or `export default class` can't be followed by
// anything after. So an expression like `export default (function(){}).toString()`
// needs to be followed by a parentheses
if (parent.type === "ExportDefaultDeclaration") {
return shouldWrapFunctionForExportDefault(path, options);
return (
// `export default function` or `export default class` can't be followed by
// anything after. So an expression like `export default (function(){}).toString()`
// needs to be followed by a parentheses
shouldWrapFunctionForExportDefault(path, options) ||
// `export default (foo, bar)` also needs parentheses
node.type === "SequenceExpression"
);
}
if (parent.type === "Decorator" && parent.expression === node) {
@@ -0,0 +1,16 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`export-default.js 1`] = `
====================================options=====================================
parsers: ["flow", "babel", "flow", "typescript"]
printWidth: 80
| printWidth
=====================================input======================================
export default (1,
2);
=====================================output=====================================
export default (1, 2);
================================================================================
`;
@@ -0,0 +1,2 @@
export default (1,
2);
+1
View File
@@ -0,0 +1 @@
run_spec(__dirname, ["flow", "babel", "flow", "typescript"]);