From bad0906a8d1a3b6a9b21e833e3205a2cd95f4c75 Mon Sep 17 00:00:00 2001 From: fisker Cheung Date: Mon, 6 Feb 2023 10:45:33 +0800 Subject: [PATCH] Avoid unnecessary `print()` in `printStatementSequence` (#14255) --- src/language-js/print/statement.js | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/language-js/print/statement.js b/src/language-js/print/statement.js index a44d52227..6b7c2e4c7 100644 --- a/src/language-js/print/statement.js +++ b/src/language-js/print/statement.js @@ -29,22 +29,20 @@ function printStatementSequence(path, options, print) { return; } - const printed = print(); + const needsSemi = + !options.semi && + !isTheOnlyJsxElementInMarkdown(options, path) && + statementNeedsASIProtection(path, options); // in no-semi mode, prepend statement with semicolon if it might break ASI // don't prepend the only JSX element in a program with semicolon - if ( - !options.semi && - !isTheOnlyJsxElementInMarkdown(options, path) && - statementNeedsASIProtection(path, options) - ) { - if (hasComment(node, CommentCheckFlags.Leading)) { - parts.push(print([], { needsSemi: true })); - } else { - parts.push(";", printed); - } + if (needsSemi && hasComment(node, CommentCheckFlags.Leading)) { + parts.push(print([], { needsSemi: true })); } else { - parts.push(printed); + if (needsSemi) { + parts.push(";"); + } + parts.push(print()); } if (node !== lastStatement) {