From 3a4261ff5d02a5f3ea1d16b9a1c53623577a3383 Mon Sep 17 00:00:00 2001 From: Dunqing Date: Wed, 29 Nov 2023 18:22:40 +0800 Subject: [PATCH] fix(prettier): keep EmptyStatement in Program (#1576) --- crates/oxc_prettier/src/format/block.rs | 7 ++++++- crates/oxc_prettier/src/format/statement.rs | 11 ++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/crates/oxc_prettier/src/format/block.rs b/crates/oxc_prettier/src/format/block.rs index 4ee14059c..8c1668791 100644 --- a/crates/oxc_prettier/src/format/block.rs +++ b/crates/oxc_prettier/src/format/block.rs @@ -72,7 +72,12 @@ pub(super) fn print_block_body<'a>( } if has_body { - parts.extend(statement::print_statement_sequence(p, stmts, remove_last_statement_hardline)); + parts.extend(statement::print_statement_sequence( + p, + stmts, + remove_last_statement_hardline, + !is_root, + )); } if is_root { diff --git a/crates/oxc_prettier/src/format/statement.rs b/crates/oxc_prettier/src/format/statement.rs index 7b890980b..344069fc3 100644 --- a/crates/oxc_prettier/src/format/statement.rs +++ b/crates/oxc_prettier/src/format/statement.rs @@ -13,16 +13,13 @@ pub(super) fn print_statement_sequence<'a>( p: &mut Prettier<'a>, stmts: &[Statement<'a>], remove_last_statement_hardline: bool, + skip_empty_statement: bool, ) -> Vec<'a, Doc<'a>> { let mut parts = p.vec(); - let mut len = stmts.len(); + let len = stmts.len(); for (i, stmt) in stmts.iter().enumerate() { - if i < len - 1 && matches!(stmts[i + 1], Statement::EmptyStatement(_)) { - len -= 1; - } - - if matches!(stmt, Statement::EmptyStatement(_)) { + if skip_empty_statement && matches!(stmt, Statement::EmptyStatement(_)) { continue; } @@ -43,7 +40,7 @@ pub(super) fn print_statement_sequence<'a>( parts.push(docs); - if i < len - 1 { + if i < len - 1 && !matches!(stmts[i + 1], Statement::EmptyStatement(_)) { parts.extend(hardline!()); if p.is_next_line_empty(stmt.span()) {