From 347b5721c0618ca9037e99423514db07bc7c825a Mon Sep 17 00:00:00 2001 From: Dunqing Date: Tue, 21 Nov 2023 18:54:26 +0800 Subject: [PATCH] feat(prettier): print multiple variable declarator correctly in VariableDeclaration (#1485) --- crates/oxc_prettier/src/format/mod.rs | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/crates/oxc_prettier/src/format/mod.rs b/crates/oxc_prettier/src/format/mod.rs index 3be496e69..6d652f5b1 100644 --- a/crates/oxc_prettier/src/format/mod.rs +++ b/crates/oxc_prettier/src/format/mod.rs @@ -564,13 +564,27 @@ impl<'a> Format<'a> for VariableDeclaration<'a> { }; let kind = self.kind.as_str(); - let mut decls = p.vec(); - decls.extend(self.declarations.iter().map(|decl| decl.format(p))); let mut parts = p.vec(); parts.push(ss!(kind)); parts.push(ss!(" ")); - parts.extend(decls); + + let is_hardline = !p.parent_kind().is_iteration_statement() + && self.declarations.iter().all(|decl| decl.init.is_some()); + let decls_len = self.declarations.len(); + parts.extend(self.declarations.iter().enumerate().map(|(i, decl)| { + if decls_len > 1 { + let mut d_parts = p.vec(); + if i != 0 { + d_parts.push(p.str(",")); + d_parts.push(if is_hardline { hardline!() } else { line!() }); + } + d_parts.push(decl.format(p)); + Doc::Indent(d_parts) + } else { + decl.format(p) + } + })); if !parent_for_loop.is_some_and(|span| span != self.span) { parts.push(ss!(";"));