diff --git a/crates/oxc_prettier/src/doc.rs b/crates/oxc_prettier/src/doc.rs index 9c17bfb1e..2f092bd18 100644 --- a/crates/oxc_prettier/src/doc.rs +++ b/crates/oxc_prettier/src/doc.rs @@ -31,19 +31,13 @@ pub enum Doc<'a> { /// no matter if the expression fits on one line or not. Hardline, /// Print something if the current `group` or the current element of `fill` breaks and something else if it doesn't. - IfBreak(IfBreak<'a>), -} - -#[derive(Debug)] -pub struct IfBreak<'a> { - pub break_contents: Vec<'a, Doc<'a>>, - pub flat_contents: Vec<'a, Doc<'a>>, + IfBreak(Vec<'a, Doc<'a>>), } impl<'a> Doc<'a> { #[must_use] - pub fn if_break(break_contents: Vec<'a, Doc<'a>>, flat_contents: Vec<'a, Doc<'a>>) -> Self { - Doc::IfBreak(IfBreak { break_contents, flat_contents }) + pub fn if_break(break_contents: Vec<'a, Doc<'a>>) -> Self { + Doc::IfBreak(break_contents) } } diff --git a/crates/oxc_prettier/src/format.rs b/crates/oxc_prettier/src/format.rs index d4ea9f4c2..9b4ad8bf4 100644 --- a/crates/oxc_prettier/src/format.rs +++ b/crates/oxc_prettier/src/format.rs @@ -780,7 +780,7 @@ impl<'a> Format<'a> for ArrayExpression<'a> { let mut if_break_comma = p.vec(); if_break_comma.push(Doc::Str(",")); - parts_inner.push(Doc::if_break(if_break_comma, p.vec())); + parts_inner.push(Doc::if_break(if_break_comma)); parts.push(group!(p, Doc::Indent(parts_inner))); diff --git a/crates/oxc_prettier/src/printer/command.rs b/crates/oxc_prettier/src/printer/command.rs index b2128c8ec..e26c2c29f 100644 --- a/crates/oxc_prettier/src/printer/command.rs +++ b/crates/oxc_prettier/src/printer/command.rs @@ -12,7 +12,7 @@ impl<'a> Command<'a> { } } -#[derive(Clone, Copy)] +#[derive(Clone, Copy, Eq, PartialEq)] pub enum Mode { Break, Flat, diff --git a/crates/oxc_prettier/src/printer/mod.rs b/crates/oxc_prettier/src/printer/mod.rs index c1fad72bc..9b00d87d8 100644 --- a/crates/oxc_prettier/src/printer/mod.rs +++ b/crates/oxc_prettier/src/printer/mod.rs @@ -7,10 +7,7 @@ mod command; use std::collections::VecDeque; -use crate::{ - doc::{Doc, IfBreak}, - PrettierOptions, -}; +use crate::{doc::Doc, PrettierOptions}; use self::command::{Command, Indent, Mode}; @@ -125,10 +122,17 @@ impl<'a> Printer<'a> { self.pos = self.indent(indent.length); } - fn handle_if_break(&mut self, if_break: IfBreak<'a>, indent: Indent, mode: Mode) { - let IfBreak { break_contents, .. } = if_break; - self.cmds - .extend(break_contents.into_iter().rev().map(|doc| Command::new(indent, mode, doc))); + fn handle_if_break( + &mut self, + if_break: oxc_allocator::Vec<'a, Doc<'a>>, + indent: Indent, + mode: Mode, + ) { + if mode == Mode::Break { + self.cmds.extend( + if_break.into_iter().rev().map(|doc| Command::new(indent, Mode::Break, doc)), + ); + } } #[allow(clippy::cast_possible_wrap)]