Skip to content

Commit

Permalink
Support Flow Enums with unknown members (#9432)
Browse files Browse the repository at this point in the history
  • Loading branch information
gkz committed Oct 20, 2020
1 parent 140cb14 commit d59a107
Show file tree
Hide file tree
Showing 6 changed files with 97 additions and 4 deletions.
22 changes: 22 additions & 0 deletions changelog_unreleased/flow/pr-9432.md
@@ -0,0 +1,22 @@
#### Flow Enums with unknown members (#9432 by @gkz)

Previously, was not supported. Now, the following is formatted:

<!-- prettier-ignore -->
```jsx
// Input
enum E {
A,
B,
...
}

// Prettier stable: parse error

// Prettier master
enum E {
A,
B,
...
}
```
15 changes: 11 additions & 4 deletions src/language-js/printer-estree.js
Expand Up @@ -2472,7 +2472,7 @@ function printPathNoParens(path, options, print, args) {
}
parts.push("of ", type, " ");
}
if (n.members.length === 0) {
if (n.members.length === 0 && !n.hasUnknownMembers) {
parts.push(
group(
concat([
Expand All @@ -2484,15 +2484,22 @@ function printPathNoParens(path, options, print, args) {
)
);
} else {
const members = n.members.length
? [
hardline,
printArrayItems(path, options, "members", print),
n.hasUnknownMembers || shouldPrintComma(options) ? "," : "",
]
: [];

parts.push(
group(
concat([
"{",
indent(
concat([
hardline,
printArrayItems(path, options, "members", print),
shouldPrintComma(options) ? "," : "",
...members,
...(n.hasUnknownMembers ? [hardline, "..."] : []),
])
),
comments.printDanglingComments(
Expand Down
51 changes: 51 additions & 0 deletions tests/flow/enums-unknown-members/__snapshots__/jsfmt.spec.js.snap
@@ -0,0 +1,51 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`enum-unknown-members.js - {"trailingComma":"all"} format 1`] = `
====================================options=====================================
parsers: ["flow"]
printWidth: 80
trailingComma: "all"
| printWidth
=====================================input======================================
// @flow
enum E {
A,
B,
...
}
=====================================output=====================================
// @flow
enum E {
A,
B,
...
}
================================================================================
`;

exports[`enum-unknown-members-empty.js - {"trailingComma":"all"} format 1`] = `
====================================options=====================================
parsers: ["flow"]
printWidth: 80
trailingComma: "all"
| printWidth
=====================================input======================================
// @flow
enum E {
...
}
=====================================output=====================================
// @flow
enum E {
...
}
================================================================================
`;
@@ -0,0 +1,5 @@
// @flow

enum E {
...
}
7 changes: 7 additions & 0 deletions tests/flow/enums-unknown-members/enum-unknown-members.js
@@ -0,0 +1,7 @@
// @flow

enum E {
A,
B,
...
}
1 change: 1 addition & 0 deletions tests/flow/enums-unknown-members/jsfmt.spec.js
@@ -0,0 +1 @@
run_spec(__dirname, ["flow"], { trailingComma: "all" });

0 comments on commit d59a107

Please sign in to comment.