From cc25f7897dc08c263d6126ec9594b76cacc7d95f Mon Sep 17 00:00:00 2001 From: Cameron Date: Tue, 28 Nov 2023 02:39:37 +0000 Subject: [PATCH] fix(prettier) Fix printing of array expressions (#1562) --- crates/oxc_prettier/src/format/array.rs | 18 +++++++++++------- tasks/prettier_conformance/prettier.snap.md | 4 +--- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/crates/oxc_prettier/src/format/array.rs b/crates/oxc_prettier/src/format/array.rs index f73de7914..cfd38355a 100644 --- a/crates/oxc_prettier/src/format/array.rs +++ b/crates/oxc_prettier/src/format/array.rs @@ -84,6 +84,7 @@ pub(super) fn print_array<'a>(p: &mut Prettier<'a>, array: &Array<'a, '_>) -> Do let id = p.next_id(); let should_use_concise_formatting = array.is_concisely_printed(); + let trailing_comma_fn = |p: &Prettier<'a>| { if !can_have_trailing_comma { ss!("") @@ -92,7 +93,7 @@ pub(super) fn print_array<'a>(p: &mut Prettier<'a>, array: &Array<'a, '_>) -> Do } else if should_use_concise_formatting { if_break!(p, ",", "", Some(id)) } else { - ss!("") + if_break!(p, ",", "", None) } }; @@ -109,7 +110,10 @@ pub(super) fn print_array<'a>(p: &mut Prettier<'a>, array: &Array<'a, '_>) -> Do } else { indent!(p, softline!(), elements) }; - parts.push(group!(p, ss!("["), parts_inner, softline!(), ss!("]"))); + parts.push(ss!("[")); + parts.push(parts_inner); + parts.push(softline!()); + parts.push(ss!("]")); let should_break = should_break(array); Doc::Group(Group::new(parts, should_break).with_id(id)) } @@ -244,11 +248,11 @@ fn should_break(array: &Array) -> bool { } } - let Expression::ArrayExpression(array) = element else { - return false; - }; - - array.elements.len() > 1 + match element { + Expression::ArrayExpression(array) => array.elements.len() > 1, + Expression::ObjectExpression(object) => object.properties.len() > 1, + _ => false, + } }) } Array::TSTupleType(tuple) => { diff --git a/tasks/prettier_conformance/prettier.snap.md b/tasks/prettier_conformance/prettier.snap.md index 2eb9a6731..ba3b2b4dd 100644 --- a/tasks/prettier_conformance/prettier.snap.md +++ b/tasks/prettier_conformance/prettier.snap.md @@ -1,11 +1,10 @@ -Compatibility: 178/591 (30.12%) +Compatibility: 180/591 (30.46%) # Failed ### arrays * arrays/empty.js * arrays/issue-10159.js -* arrays/nested.js * arrays/numbers-in-args.js * arrays/numbers-negative-comment-after-minus.js * arrays/numbers-negative.js @@ -13,7 +12,6 @@ Compatibility: 178/591 (30.12%) * arrays/numbers-with-trailing-comments.js * arrays/numbers-with-tricky-comments.js * arrays/numbers2.js -* arrays/numbers3.js * arrays/preserve_empty_lines.js * arrays/tuple-and-record.js