From fa089f5bb6a1f3f89d6572abb2dbad017eb91d6b Mon Sep 17 00:00:00 2001 From: Lucas Duailibe Date: Thu, 5 Apr 2018 17:22:10 -0300 Subject: [PATCH] If consequent is a block statement, treat as trailing comment --- src/language-js/comments.js | 6 +++++- src/language-js/printer-estree.js | 19 ++++++++++++------- .../__snapshots__/jsfmt.spec.js.snap | 3 +-- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/language-js/comments.js b/src/language-js/comments.js index ed463825..503f5015 100644 --- a/src/language-js/comments.js +++ b/src/language-js/comments.js @@ -211,7 +211,11 @@ function handleIfStatementComments( precedingNode === enclosingNode.consequent && followingNode === enclosingNode.alternate ) { - addDanglingComment(enclosingNode, comment); + if (precedingNode.type === "BlockStatement") { + addTrailingComment(precedingNode, comment); + } else { + addDanglingComment(enclosingNode, comment); + } return true; } diff --git a/src/language-js/printer-estree.js b/src/language-js/printer-estree.js index e2e2cf96..b373a295 100644 --- a/src/language-js/printer-estree.js +++ b/src/language-js/printer-estree.js @@ -1456,13 +1456,18 @@ function printPathNoParens(path, options, print, args) { if (n.alternate) { const commentOnOwnLine = - hasDanglingComments(n) && - n.comments.some( - comment => - !comment.leading && - !comment.trailing && - !privateUtil.isBlockComment(comment) - ); + (hasTrailingComment(n.consequent) && + n.consequent.comments.some( + comment => + comment.trailing && !privateUtil.isBlockComment(comment) + )) || + (hasDanglingComments(n) && + n.comments.some( + comment => + !comment.leading && + !comment.trailing && + !privateUtil.isBlockComment(comment) + )); const elseOnSameLine = n.consequent.type === "BlockStatement" && !commentOnOwnLine; parts.push(elseOnSameLine ? " " : hardline); diff --git a/tests/flow/refinements/__snapshots__/jsfmt.spec.js.snap b/tests/flow/refinements/__snapshots__/jsfmt.spec.js.snap index 88181c25..8bdcaaf9 100644 --- a/tests/flow/refinements/__snapshots__/jsfmt.spec.js.snap +++ b/tests/flow/refinements/__snapshots__/jsfmt.spec.js.snap @@ -2571,8 +2571,7 @@ type Breakfast = Apple | Orange | Broccoli | Carrot; function bar(x: Breakfast) { if (x.kind === "Fruit") { (x.taste: "Good"); - } - // error, Apple.taste = Bad + } // error, Apple.taste = Bad else (x.raw: "No"); // error, Carrot.raw = Maybe }