-
-
Notifications
You must be signed in to change notification settings - Fork 4.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix comments print in IfStatement
#15076
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
#### Fix comments print in `IfStatement` (#15076 by @fisker) | ||
|
||
<!-- prettier-ignore --> | ||
```js | ||
function a(b) { | ||
if (b) return 1; // comment | ||
else return 2; | ||
} | ||
|
||
/* Prettier stable */ | ||
Error: Comment "comment" was not printed. Please report this error! | ||
|
||
/* Prettier main */ | ||
function a(b) { | ||
if (b) return 1; // comment | ||
else return 2; | ||
} | ||
``` |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -93,26 +93,44 @@ parsers: ["babel", "flow", "typescript"] | |
printWidth: 80 | ||
| printWidth | ||
=====================================input====================================== | ||
if (a === 0) doSomething(); // comment A1 | ||
if (a === 0) doSomething(); // comment A1 | ||
else if (a === 1) doSomethingElse(); // comment B1 | ||
else if (a === 2) doSomethingElse(); // comment C1 | ||
if (a === 0) doSomething(); /* comment A2 */ | ||
if (a === 0) doSomething(); /* comment A2 */ | ||
else if (a === 1) doSomethingElse(); /* comment B2 */ | ||
else if (a === 2) doSomethingElse(); /* comment C2 */ | ||
if (a === 0) expr; // comment A3 | ||
if (a === 0) expr; // comment A3 | ||
else if (a === 1) expr; // comment B3 | ||
else if (a === 2) expr; // comment C3 | ||
if (a === 0) expr; /* comment A4 */ | ||
if (a === 0) expr; /* comment A4 */ | ||
else if (a === 1) expr; /* comment B4 */ | ||
else if (a === 2) expr; /* comment C4 */ | ||
if (a === 0) looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong; // comment A5 | ||
if (a === 0) looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong; // comment A5 | ||
else if (a === 1) looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong; // comment B5 | ||
else if (a === 2) looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong; // comment C5 | ||
function a() { | ||
if (a) return; /* comment 6a */ | ||
else return 2; | ||
if (a) return 1; /* comment 6b */ | ||
else return 2; | ||
if (a) throw e; /* comment 6d */ | ||
else return 2; | ||
// TODO[@fisker]: fix this | ||
// if (a) var a = 1; /* comment 6e */ | ||
// else return 2; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Many nodes can be a child of There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I forget... but I tried to run tests in local with: - addDanglingComment(
- precedingNode,
- comment,
- markerForIfWithoutBlockAndSameLineComment,
- );
+ addTrailingComment(precedingNode, comment); then I got the spanpshot diffs like this: - if (a === 0) expr; // comment A3
- else if (a === 1) expr; // comment B3
+ if (a === 0)
+ expr; // comment A3
+ else if (a === 1)
+ expr; // comment B3 At the time, I may have wanted to avoid this line break. |
||
if (a) if (b); /* comment 6f */ | ||
else return 2; | ||
} | ||
=====================================output===================================== | ||
if (a === 0) doSomething(); // comment A1 | ||
else if (a === 1) doSomethingElse(); // comment B1 | ||
|
@@ -137,6 +155,25 @@ else if (a === 1) | |
else if (a === 2) | ||
looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong; // comment C5 | ||
function a() { | ||
if (a) return /* comment 6a */; | ||
else return 2; | ||
if (a) return 1 /* comment 6b */; | ||
else return 2; | ||
if (a) throw e /* comment 6d */; | ||
else return 2; | ||
// TODO[@fisker]: fix this | ||
// if (a) var a = 1; /* comment 6e */ | ||
// else return 2; | ||
if (a) | ||
if (b /* comment 6f */); | ||
else return 2; | ||
} | ||
================================================================================ | ||
`; | ||
|
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,19 +1,37 @@ | ||
if (a === 0) doSomething(); // comment A1 | ||
if (a === 0) doSomething(); // comment A1 | ||
else if (a === 1) doSomethingElse(); // comment B1 | ||
else if (a === 2) doSomethingElse(); // comment C1 | ||
|
||
if (a === 0) doSomething(); /* comment A2 */ | ||
if (a === 0) doSomething(); /* comment A2 */ | ||
else if (a === 1) doSomethingElse(); /* comment B2 */ | ||
else if (a === 2) doSomethingElse(); /* comment C2 */ | ||
|
||
if (a === 0) expr; // comment A3 | ||
if (a === 0) expr; // comment A3 | ||
else if (a === 1) expr; // comment B3 | ||
else if (a === 2) expr; // comment C3 | ||
|
||
if (a === 0) expr; /* comment A4 */ | ||
if (a === 0) expr; /* comment A4 */ | ||
else if (a === 1) expr; /* comment B4 */ | ||
else if (a === 2) expr; /* comment C4 */ | ||
|
||
if (a === 0) looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong; // comment A5 | ||
if (a === 0) looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong; // comment A5 | ||
else if (a === 1) looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong; // comment B5 | ||
else if (a === 2) looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong; // comment C5 | ||
|
||
function a() { | ||
if (a) return; /* comment 6a */ | ||
else return 2; | ||
|
||
if (a) return 1; /* comment 6b */ | ||
else return 2; | ||
|
||
if (a) throw e; /* comment 6d */ | ||
else return 2; | ||
|
||
// TODO[@fisker]: fix this | ||
// if (a) var a = 1; /* comment 6e */ | ||
// else return 2; | ||
|
||
if (a) if (b); /* comment 6f */ | ||
else return 2; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Where does this extra spacing come from? Not sure if i is expected in output, but maybe I am missing something.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I added to align
IfStatement.conquest
.https://github.com/prettier/prettier/blob/009ff69e7d7644004ec331077df0f39c1150c98a/tests/format/js/if/expr_and_same_line_comments.js