Break lines before binary operators (#7111)
* Add additional binary expression comment tests Refs #3806 These cover a few edge cases I encountered while maintaining `@btmills/prettier` over the last few years. I'm adding them up front to demonstrate that the `experimentalOperatorPosition` changes in a later commit have no effect on this formatting when the flag is not enabled. * Define experimentalOperatorPosition flag Refs #3806 This merely defines the flag. A future commit will use it in updated logic. * Add experimentalOperatorPosition default tests Right now, this flag isn't implemented, so these tests duplicate the existing behavior. I'm adding them now so that when I implement the flag's logic in a future commit, the changed formatting will be obvious in the diff and easier to review. * Implement experimentalOperatorPosition flag Fixes #3806 as requested in https://github.com/prettier/prettier/pull/7111#issuecomment-2252623779 The flag's tests were already added in a previous commit, so the test changes you see in this commit are specifically due to the new flag's implementation. * Document experimentalOperatorPosition flag * Change operator position option start|end In response to https://github.com/prettier/prettier/pull/7111#discussion_r1729382119 * Add TS intersection line wrapping tests This clones TypeScript's type union operator tests in `union-parens.ts` and swaps the operators (& <-> |) to test the the type interesection operator. It also runs intersection tests with the new `experimentalOperatorPosition: "start"` flag. This does _not_ yet update the implementation to consider the flag; to ease review, I'll make that change in the next commit to isolate the impact of the change. * Apply experimentalOperatorPosition: start to type intersections The type union operator was already formatted at the beginning of lines by default, so that logic didn't need to be updated. * Update 7111.md * Update tests after rebasing I rebased from1dfe28f85toc7066780eto fix test failures related to https://github.com/prettier/prettier/pull/16601. The rebase applied cleanly, and this was the only change to tests. Since the PR has already been approved, I'll keep this as a separate commit rather than squashing into the prior commits. --------- Co-authored-by: fisker Cheung <lionkay@gmail.com> Co-authored-by: SUZUKI Sosuke <aosukeke@gmail.com>
This commit is contained in:
17 files changed
+2342
-21
No files matched your search
@@ -53,6 +53,9 @@ Format options:
|
||||
--end-of-line <lf|crlf|cr|auto>
|
||||
Which end of line characters to apply.
|
||||
Defaults to lf.
|
||||
--experimental-operator-position <start|end>
|
||||
Where to print operators when binary expressions wrap lines.
|
||||
Defaults to end.
|
||||
--no-experimental-ternaries
|
||||
Default behavior of ternaries; keep question marks on the same line as the consequent.
|
||||
--html-whitespace-sensitivity <css|strict|ignore>
|
||||
@@ -218,6 +221,9 @@ Format options:
|
||||
--end-of-line <lf|crlf|cr|auto>
|
||||
Which end of line characters to apply.
|
||||
Defaults to lf.
|
||||
--experimental-operator-position <start|end>
|
||||
Where to print operators when binary expressions wrap lines.
|
||||
Defaults to end.
|
||||
--no-experimental-ternaries
|
||||
Default behavior of ternaries; keep question marks on the same line as the consequent.
|
||||
--html-whitespace-sensitivity <css|strict|ignore>
|
||||
|
||||
@@ -191,6 +191,23 @@ Default: lf"
|
||||
|
||||
exports[`show detailed usage with --help end-of-line (write) 1`] = `[]`;
|
||||
|
||||
exports[`show detailed usage with --help experimental-operator-position (stderr) 1`] = `""`;
|
||||
|
||||
exports[`show detailed usage with --help experimental-operator-position (stdout) 1`] = `
|
||||
"--experimental-operator-position <start|end>
|
||||
|
||||
Where to print operators when binary expressions wrap lines.
|
||||
|
||||
Valid options:
|
||||
|
||||
start Print operators at the start of new lines.
|
||||
end Print operators at the end of previous lines.
|
||||
|
||||
Default: end"
|
||||
`;
|
||||
|
||||
exports[`show detailed usage with --help experimental-operator-position (write) 1`] = `[]`;
|
||||
|
||||
exports[`show detailed usage with --help experimental-ternaries (stderr) 1`] = `""`;
|
||||
|
||||
exports[`show detailed usage with --help experimental-ternaries (stdout) 1`] = `
|
||||
|
||||
@@ -17,10 +17,10 @@ exports[`show external options with \`--help\` 1`] = `
|
||||
- First value
|
||||
+ Second value
|
||||
|
||||
@@ -24,16 +24,18 @@
|
||||
--end-of-line <lf|crlf|cr|auto>
|
||||
Which end of line characters to apply.
|
||||
Defaults to lf.
|
||||
@@ -27,16 +27,18 @@
|
||||
--experimental-operator-position <start|end>
|
||||
Where to print operators when binary expressions wrap lines.
|
||||
Defaults to end.
|
||||
--no-experimental-ternaries
|
||||
Default behavior of ternaries; keep question marks on the same line as the consequent.
|
||||
+ --foo-string <string> foo description
|
||||
|
||||
@@ -60,10 +60,10 @@ exports[`show external options with \`--help\` 1`] = `
|
||||
- First value
|
||||
+ Second value
|
||||
|
||||
@@ -24,16 +24,18 @@
|
||||
--end-of-line <lf|crlf|cr|auto>
|
||||
Which end of line characters to apply.
|
||||
Defaults to lf.
|
||||
@@ -27,16 +27,18 @@
|
||||
--experimental-operator-position <start|end>
|
||||
Where to print operators when binary expressions wrap lines.
|
||||
Defaults to end.
|
||||
--no-experimental-ternaries
|
||||
Default behavior of ternaries; keep question marks on the same line as the consequent.
|
||||
+ --foo-option <bar|baz> foo description
|
||||
|
||||
@@ -89,6 +89,24 @@ exports[`schema 1`] = `
|
||||
},
|
||||
],
|
||||
},
|
||||
"experimentalOperatorPosition": {
|
||||
"default": "end",
|
||||
"description": "Where to print operators when binary expressions wrap lines.",
|
||||
"oneOf": [
|
||||
{
|
||||
"description": "Print operators at the start of new lines.",
|
||||
"enum": [
|
||||
"start",
|
||||
],
|
||||
},
|
||||
{
|
||||
"description": "Print operators at the end of previous lines.",
|
||||
"enum": [
|
||||
"end",
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
"experimentalTernaries": {
|
||||
"default": false,
|
||||
"description": "Use curious ternaries, with the question mark after the condition.",
|
||||
|
||||
@@ -130,6 +130,14 @@ exports[`API getSupportInfo() 1`] = `
|
||||
"default": "lf",
|
||||
"type": "choice",
|
||||
},
|
||||
"experimentalOperatorPosition": {
|
||||
"choices": [
|
||||
"start",
|
||||
"end",
|
||||
],
|
||||
"default": "end",
|
||||
"type": "choice",
|
||||
},
|
||||
"experimentalTernaries": {
|
||||
"default": false,
|
||||
"type": "boolean",
|
||||
@@ -847,6 +855,24 @@ exports[`CLI --support-info (stdout) 1`] = `
|
||||
"pluginDefaults": {},
|
||||
"type": "choice"
|
||||
},
|
||||
{
|
||||
"category": "JavaScript",
|
||||
"choices": [
|
||||
{
|
||||
"description": "Print operators at the start of new lines.",
|
||||
"value": "start"
|
||||
},
|
||||
{
|
||||
"description": "Print operators at the end of previous lines.",
|
||||
"value": "end"
|
||||
}
|
||||
],
|
||||
"default": "end",
|
||||
"description": "Where to print operators when binary expressions wrap lines.",
|
||||
"name": "experimentalOperatorPosition",
|
||||
"pluginDefaults": {},
|
||||
"type": "choice"
|
||||
},
|
||||
{
|
||||
"category": "JavaScript",
|
||||
"default": false,
|
||||
|
||||
Reference in new issue
Block a user