Skip to content

Commit

Permalink
Fix comments print in IfStatement (prettier#15076)
Browse files Browse the repository at this point in the history
  • Loading branch information
fisker authored and medikoo committed Feb 15, 2024
1 parent bc8c137 commit 521ca0d
Show file tree
Hide file tree
Showing 4 changed files with 86 additions and 11 deletions.
18 changes: 18 additions & 0 deletions changelog_unreleased/javascript/15076.md
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;
}
```
4 changes: 3 additions & 1 deletion src/language-js/comments/handle-comments.js
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,9 @@ function handleIfStatementComments({
addDanglingComment(
precedingNode,
comment,
markerForIfWithoutBlockAndSameLineComment,
precedingNode.type === "ExpressionStatement"
? markerForIfWithoutBlockAndSameLineComment
: undefined,
);
} else {
addDanglingComment(enclosingNode, comment);
Expand Down
47 changes: 42 additions & 5 deletions tests/format/js/if/__snapshots__/jsfmt.spec.js.snap
Original file line number Diff line number Diff line change
Expand Up @@ -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;
if (a) if (b); /* comment 6f */
else return 2;
}
=====================================output=====================================
if (a === 0) doSomething(); // comment A1
else if (a === 1) doSomethingElse(); // comment B1
Expand All @@ -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;
}
================================================================================
`;

Expand Down
28 changes: 23 additions & 5 deletions tests/format/js/if/expr_and_same_line_comments.js
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;
}

0 comments on commit 521ca0d

Please sign in to comment.