From 338709b71ee73150c24fb48e636b8f356f665c6a Mon Sep 17 00:00:00 2001 From: Micha Reiser Date: Mon, 29 Aug 2022 11:42:26 +0200 Subject: [PATCH] feat(rome_js_formatter): Heuristic for flat arrays Align Rome's heuristic with Prettier's of when use `fill` vs a group. There's one difference that I intend not to fix because I believe it is a bug in Prettier. Rome's printer automatically inserts a `group` around `fill` elements so that `fits` returns `false` if it encounters any hard line break. Prettier doesn't do so and any hard line break will result in `fits` return true. This difference is meaningful for ```javascript [ // comment2 -380014, -253951682 ] ``` where the first element contains hard line breaks because of the `//comment`. Prettier assumes that the content fits and, thus, prints `-253...` on the same line. Rome does not and istead, prints a line break after `-3800..`. I can demonstrate that this leads to issues where Prettier incorrectly exceeds the line widths: [example](https://prettier.io/playground/#N4Igxg9gdgLgprEAuEBtAOlA9FgBJAWwIRgCZMBaAZgA4AGOgRgBYq32POvufe-+ANJVIBWKgE4RjAGw1yUXLgC6mEAJAQADjACW0AM7JQAQwBOpiAHcACmYSGUxgDaXjAT0PqARqeNgA1nAwAMrGxAAyOlBwyABmzvpw3r4BQcGaflEA5sgwpgCuSSBwBF5wACblFeHGUFn5xllwAGIQpgTGMLp1yCDG+TAQaiAAFjAETgDqIzrw+hlgcMH2szoAbrNuvWD6niBRiaYw1r5ZHXEJRQBW+gAewdlOcACK+RDwF06J6hmmh70wNyaOD6MCmHTaYaacGwSY6cowEbIeg-CyJSa+TS9aEguCmNYxdQARze8BOWgcIBxhwJw1McBJOnpJ0a5yQ8S+RUSBB0uQKXMeL1JMXZl3UMGMXjhCKRSFI4t8Oic2QAwhAiMZes4nMN8okACqShwc74gNaFACSUCqsGCYIhMAAgtbgoCnp9EgBfT1AA) ```javascript [ // comment2 -380014333333333333333333333333333333333333333333333333333333333333333333, -253951682 ] ``` --- .../declarations/for_variable_declaration.rs | 11 +- .../src/js/expressions/array_expression.rs | 95 ++++++- .../src/js/lists/array_element_list.rs | 150 +++++++--- .../src/utils/binary_like_expression.rs | 17 +- crates/rome_js_formatter/src/utils/mod.rs | 54 ++-- .../js/module/array/array_nested.js.snap | 26 +- .../specs/js/module/array/empty_lines.js.snap | 3 +- .../prettier/js/arrays/issue-10159.js.snap | 69 ----- .../specs/prettier/js/arrays/nested.js.snap | 145 ---------- .../js/arrays/numbers-negative.js.snap | 94 +------ .../numbers-with-tricky-comments.js.snap | 115 +------- .../specs/prettier/js/arrays/numbers2.js.snap | 138 --------- .../specs/prettier/js/arrays/numbers3.js.snap | 262 ------------------ .../js/arrays/preserve_empty_lines.js.snap | 52 ---- .../jest-each-template-string.js.snap | 34 ++- .../js/test-declarations/jest-each.js.snap | 47 +--- .../trailing_whitespace.js.snap | 15 +- .../typescript/cast/generic-cast.ts.snap | 34 +-- 18 files changed, 313 insertions(+), 1048 deletions(-) delete mode 100644 crates/rome_js_formatter/tests/specs/prettier/js/arrays/issue-10159.js.snap delete mode 100644 crates/rome_js_formatter/tests/specs/prettier/js/arrays/nested.js.snap delete mode 100644 crates/rome_js_formatter/tests/specs/prettier/js/arrays/numbers2.js.snap delete mode 100644 crates/rome_js_formatter/tests/specs/prettier/js/arrays/numbers3.js.snap delete mode 100644 crates/rome_js_formatter/tests/specs/prettier/js/arrays/preserve_empty_lines.js.snap diff --git a/crates/rome_js_formatter/src/js/declarations/for_variable_declaration.rs b/crates/rome_js_formatter/src/js/declarations/for_variable_declaration.rs index 38be0f602054..b1ecd0b164c5 100644 --- a/crates/rome_js_formatter/src/js/declarations/for_variable_declaration.rs +++ b/crates/rome_js_formatter/src/js/declarations/for_variable_declaration.rs @@ -1,6 +1,6 @@ use crate::prelude::*; -use rome_formatter::write; +use rome_formatter::{format_args, write}; use rome_js_syntax::JsForVariableDeclaration; use rome_js_syntax::JsForVariableDeclarationFields; @@ -14,6 +14,13 @@ impl FormatNodeRule for FormatJsForVariableDeclaration declarator, } = node.as_fields(); - write![f, [kind_token.format(), space(), declarator.format(),]] + write![ + f, + [group(&format_args![ + kind_token.format(), + space(), + declarator.format() + ])] + ] } } diff --git a/crates/rome_js_formatter/src/js/expressions/array_expression.rs b/crates/rome_js_formatter/src/js/expressions/array_expression.rs index f7dd795b835f..4887258749d5 100644 --- a/crates/rome_js_formatter/src/js/expressions/array_expression.rs +++ b/crates/rome_js_formatter/src/js/expressions/array_expression.rs @@ -2,8 +2,11 @@ use crate::prelude::*; use crate::parentheses::NeedsParentheses; use rome_formatter::write; -use rome_js_syntax::JsArrayExpressionFields; +use rome_js_syntax::{ + JsAnyArrayElement, JsAnyExpression, JsArrayElementList, JsArrayExpressionFields, +}; use rome_js_syntax::{JsArrayExpression, JsSyntaxNode}; +use rome_rowan::SyntaxResult; #[derive(Debug, Clone, Default)] pub struct FormatJsArrayExpression; @@ -16,17 +19,27 @@ impl FormatNodeRule for FormatJsArrayExpression { r_brack_token, } = node.as_fields(); - let group_id = f.group_id("array"); + if should_break(&elements)? { + write!( + f, + [ + format_delimited(&l_brack_token?, &elements.format(), &r_brack_token?) + .block_indent() + ] + ) + } else { + let group_id = f.group_id("array"); - let elements = elements.format().with_options(Some(group_id)); + let elements = elements.format().with_options(Some(group_id)); - write!( - f, - [ - format_delimited(&l_brack_token?, &elements, &r_brack_token?) - .soft_block_indent_with_group_id(Some(group_id)) - ] - ) + write!( + f, + [ + format_delimited(&l_brack_token?, &elements, &r_brack_token?) + .soft_block_indent_with_group_id(Some(group_id)) + ] + ) + } } fn needs_parentheses(&self, item: &JsArrayExpression) -> bool { @@ -34,6 +47,68 @@ impl FormatNodeRule for FormatJsArrayExpression { } } +/// Returns `true` for arrays containing at least two elements if +/// * all elements are either object xor array expressions +/// * each child array has at least two elements or each child object has at least two members. +fn should_break(elements: &JsArrayElementList) -> SyntaxResult { + if elements.len() < 2 { + Ok(false) + } else { + // const elementType = element && element.type; + // if ( + // elementType !== "ArrayExpression" && + // elementType !== "ObjectExpression" + // ) { + // return false; + // } + // + // const nextElement = elements[i + 1]; + // if (nextElement && elementType !== nextElement.type) { + // return false; + // } + // + // const itemsKey = + // elementType === "ArrayExpression" ? "elements" : "properties"; + // + // return element[itemsKey] && element[itemsKey].length > 1; + + let mut elements = elements.iter().peekable(); + + while let Some(element) = elements.next() { + match element? { + JsAnyArrayElement::JsAnyExpression(JsAnyExpression::JsArrayExpression(array)) => { + let next_is_array_or_end = matches!( + elements.peek(), + None | Some(Ok(JsAnyArrayElement::JsAnyExpression( + JsAnyExpression::JsArrayExpression(_) + ))) + ); + if array.elements().len() < 2 || !next_is_array_or_end { + return Ok(false); + } + } + JsAnyArrayElement::JsAnyExpression(JsAnyExpression::JsObjectExpression(object)) => { + let next_is_object_or_empty = matches!( + elements.peek(), + None | Some(Ok(JsAnyArrayElement::JsAnyExpression( + JsAnyExpression::JsObjectExpression(_) + ))) + ); + + if object.members().len() < 2 || !next_is_object_or_empty { + return Ok(false); + } + } + _ => { + return Ok(false); + } + } + } + + Ok(true) + } +} + impl NeedsParentheses for JsArrayExpression { #[inline(always)] fn needs_parentheses(&self) -> bool { diff --git a/crates/rome_js_formatter/src/js/lists/array_element_list.rs b/crates/rome_js_formatter/src/js/lists/array_element_list.rs index c0641e7543ee..dfeb8b4509db 100644 --- a/crates/rome_js_formatter/src/js/lists/array_element_list.rs +++ b/crates/rome_js_formatter/src/js/lists/array_element_list.rs @@ -1,11 +1,10 @@ use crate::prelude::*; -use rome_formatter::{FormatRuleWithOptions, GroupId}; -use std::convert::Infallible; +use rome_formatter::{write, FormatRuleWithOptions, GroupId}; use crate::utils::array::write_array_node; -use crate::utils::has_formatter_trivia; -use rome_js_syntax::{JsAnyExpression, JsArrayElementList, JsSyntaxKind}; +use crate::utils::{has_token_trailing_line_comment, has_trailing_line_comment}; +use rome_js_syntax::{JsArrayElementList, JsSyntaxKind}; use rome_rowan::{AstNode, AstSeparatedList}; #[derive(Debug, Clone, Default)] @@ -26,23 +25,63 @@ impl FormatRule for FormatJsArrayElementList { type Context = JsFormatContext; fn fmt(&self, node: &JsArrayElementList, f: &mut JsFormatter) -> FormatResult<()> { - if !has_formatter_trivia(node.syntax()) && can_print_fill(node) { - // Using format_separated is valid in this case as can_print_fill does not allow holes - return f - .fill() - .entries( - &soft_line_break_or_space(), + let layout = if can_print_fill(node) { + ArrayLayout::Fill + } else { + ArrayLayout::OnePerLine + }; + + match layout { + ArrayLayout::Fill => { + let mut filler = f.fill(); + + // Using format_separated is valid in this case as can_print_fill does not allow holes + for (element, formatted) in node.iter().zip( node.format_separated(JsSyntaxKind::COMMA) .with_group_id(self.group_id), - &soft_line_break_or_space(), - ) - .finish(); - } + ) { + filler.entry( + &format_once(|f| { + if get_lines_before(element?.syntax()) > 1 { + write!(f, [empty_line()]) + } else { + write!(f, [soft_line_break_or_space()]) + } + }), + &formatted, + ); + } - write_array_node(node, f) + return filler.finish(); + } + ArrayLayout::OnePerLine => write_array_node(node, f), + } } } +#[derive(Copy, Clone)] +enum ArrayLayout { + /// Tries to fit as many array elements on a single line as possible. + /// + /// ```javascript + /// [ + /// 1, 2, 3, + /// 5, 6, + /// ] + /// ``` + Fill, + + /// Prints every element on a single line if the whole array expression exceeds the line width + /// ```javascript + /// [ + /// a.b(), + /// 4, + /// 3, + /// ] + /// ``` + OnePerLine, +} + /// Returns true if the provided JsArrayElementList could /// be "fill-printed" instead of breaking each element on /// a different line. @@ -55,39 +94,58 @@ fn can_print_fill(list: &JsArrayElementList) -> bool { use rome_js_syntax::JsAnyExpression::*; use rome_js_syntax::JsUnaryOperator::*; - list.iter().all(|item| match item { - Ok(JsAnyExpression(JsUnaryExpression(expr))) => { - match expr.operator() { - Ok(Plus | Minus | BitwiseNot | LogicalNot) => {} - _ => return false, + if list.is_empty() { + return false; + } + + list.elements().all(|item| { + let separator_has_trailing = item.trailing_separator().map_or(true, |separator| { + separator.map_or(false, |separator| { + has_token_trailing_line_comment(separator) + }) + }); + + if separator_has_trailing { + return false; + } + + let syntax = match item.into_node() { + Ok(JsAnyExpression(JsAnyLiteralExpression( + rome_js_syntax::JsAnyLiteralExpression::JsNumberLiteralExpression(literal), + ))) => literal.into_syntax(), + + Ok(JsAnyExpression(JsUnaryExpression(expr))) => { + let signed = matches!(expr.operator(), Ok(Plus | Minus)); + let argument = expr.argument(); + + match argument { + Ok(JsAnyLiteralExpression( + rome_js_syntax::JsAnyLiteralExpression::JsNumberLiteralExpression(literal), + )) => { + let has_operator_comments = expr + .operator_token() + .map_or(false, |operator| operator.has_trailing_comments()); + + if signed + && !literal.syntax().has_leading_comments() + && !has_operator_comments + { + literal.into_syntax() + } else { + return false; + } + } + _ => { + return false; + } + } } - if let Ok(expr) = expr.argument() { - is_short_literal(&expr) - } else { - false + _ => { + return false; } - } - Ok(JsAnyExpression(expr)) => is_short_literal(&expr), - _ => false, - }) -} + }; -/// Returns true if the provided expression is a literal with 10 or less characters -fn is_short_literal(expr: &JsAnyExpression) -> bool { - match expr { - JsAnyExpression::JsAnyLiteralExpression(lit) => { - let token_len = lit - .syntax() - .text_trimmed() - .try_fold_chunks::<_, _, Infallible>(0, |sum, chunk| { - // Count actual characters instead of byte length - Ok(sum + chunk.chars().count()) - }) - .expect("the above fold operation is infallible"); - - token_len <= 10 - } - _ => false, - } + !has_trailing_line_comment(&syntax) + }) } diff --git a/crates/rome_js_formatter/src/utils/binary_like_expression.rs b/crates/rome_js_formatter/src/utils/binary_like_expression.rs index a732fa15dd56..5cafd52da47a 100644 --- a/crates/rome_js_formatter/src/utils/binary_like_expression.rs +++ b/crates/rome_js_formatter/src/utils/binary_like_expression.rs @@ -54,7 +54,8 @@ //! and right side of each Right side. use crate::prelude::*; -use rome_formatter::{format_args, write, Buffer, CommentStyle, CstFormatContext}; +use crate::utils::{has_token_trailing_line_comment, has_trailing_line_comment}; +use rome_formatter::{format_args, write, Buffer, CstFormatContext}; use rome_js_syntax::{ JsAnyExpression, JsAnyInProperty, JsBinaryExpression, JsBinaryOperator, JsDoWhileStatement, JsIfStatement, JsInExpression, JsInstanceofExpression, JsLogicalExpression, JsLogicalOperator, @@ -66,7 +67,6 @@ use crate::parentheses::{ is_arrow_function_body, is_callee, is_member_object, is_spread, is_tag, NeedsParentheses, }; -use crate::context::JsCommentStyle; use crate::js::expressions::static_member_expression::JsAnyStaticMemberLike; use crate::utils::assignment_like::has_leading_own_line_comment; use rome_rowan::{declare_node_union, AstNode, SyntaxResult}; @@ -977,16 +977,3 @@ mod tests { ); } } - -fn has_trailing_line_comment(node: &JsSyntaxNode) -> bool { - node.last_token() - .map_or(false, |token| has_token_trailing_line_comment(&token)) -} - -fn has_token_trailing_line_comment(token: &JsSyntaxToken) -> bool { - token - .trailing_trivia() - .pieces() - .filter_map(|piece| piece.as_comments()) - .any(|comment| JsCommentStyle.get_comment_kind(&comment).is_line()) -} diff --git a/crates/rome_js_formatter/src/utils/mod.rs b/crates/rome_js_formatter/src/utils/mod.rs index b098a254238b..e07aad5aab39 100644 --- a/crates/rome_js_formatter/src/utils/mod.rs +++ b/crates/rome_js_formatter/src/utils/mod.rs @@ -16,6 +16,7 @@ mod typescript; pub(crate) use crate::parentheses::resolve_left_most_expression; use crate::prelude::*; +use crate::JsCommentStyle; pub(crate) use assignment_like::JsAnyAssignmentLike; pub(crate) use binary_like_expression::{ needs_binary_like_parentheses, JsAnyBinaryLikeExpression, JsAnyBinaryLikeLeftExpression, @@ -24,10 +25,10 @@ pub(crate) use conditional::JsAnyConditional; pub(crate) use member_chain::get_member_chain; pub(crate) use object_like::JsObjectLike; pub(crate) use object_pattern_like::JsObjectPatternLike; -use rome_formatter::{format_args, write, Buffer, VecBuffer}; +use rome_formatter::{format_args, write, Buffer, CommentStyle, VecBuffer}; use rome_js_syntax::{JsAnyExpression, JsAnyStatement, JsInitializerClause, JsLanguage, Modifiers}; use rome_js_syntax::{JsSyntaxKind, JsSyntaxNode, JsSyntaxToken}; -use rome_rowan::{AstNode, AstNodeList, Direction}; +use rome_rowan::{AstNode, AstNodeList}; pub(crate) use string_utils::*; pub(crate) use typescript::should_hug_type; @@ -100,42 +101,6 @@ impl Format for FormatInterpreterToken<'_> { } } -/// Returns true if this node contains "printable" trivias: comments -/// or empty lines (2 consecutive newlines only separated by whitespace) -pub(crate) fn has_formatter_trivia(node: &JsSyntaxNode) -> bool { - let mut line_count = 0; - - for token in node.descendants_tokens(Direction::Next) { - for trivia in token.leading_trivia().pieces() { - if trivia.is_comments() { - return true; - } else if trivia.is_newline() { - line_count += 1; - if line_count >= 2 { - return true; - } - } - } - - // This is where the token would be, - // reset the consecutive newline counter - line_count = 0; - - for trivia in token.trailing_trivia().pieces() { - if trivia.is_comments() { - return true; - } else if trivia.is_newline() { - line_count += 1; - if line_count >= 2 { - return true; - } - } - } - } - - false -} - /// Returns true if this node contains newlines in trivias. pub(crate) fn node_has_leading_newline(node: &JsSyntaxNode) -> bool { if let Some(leading_trivia) = node.first_leading_trivia() { @@ -283,3 +248,16 @@ where join_with.finish() } + +pub(crate) fn has_trailing_line_comment(node: &JsSyntaxNode) -> bool { + node.last_token() + .map_or(false, |token| has_token_trailing_line_comment(&token)) +} + +pub(crate) fn has_token_trailing_line_comment(token: &JsSyntaxToken) -> bool { + token + .trailing_trivia() + .pieces() + .filter_map(|piece| piece.as_comments()) + .any(|comment| JsCommentStyle.get_comment_kind(&comment).is_line()) +} diff --git a/crates/rome_js_formatter/tests/specs/js/module/array/array_nested.js.snap b/crates/rome_js_formatter/tests/specs/js/module/array/array_nested.js.snap index 9bfe1fbe21f8..eedbaee744f1 100644 --- a/crates/rome_js_formatter/tests/specs/js/module/array/array_nested.js.snap +++ b/crates/rome_js_formatter/tests/specs/js/module/array/array_nested.js.snap @@ -74,11 +74,21 @@ let q = [[0, 1], [], []]; let r = [[0, 1], [0], []]; let s = [[0, 1], [0], [0]]; let t = [[0, 1], [0, 1], [0]]; -let u = [[0, 1], [0, 1], [0, 1]]; +let u = [ + [0, 1], + [0, 1], + [0, 1], +]; let v = [[], [1, 2, 3]]; let w = [[1], [1]]; -let x = [[1, 2], [1, 2, 3]]; -let y = [[1, 0], [1, 0]]; +let x = [ + [1, 2], + [1, 2, 3], +]; +let y = [ + [1, 0], + [1, 0], +]; let z = [{}]; let a1 = [{}, {}]; let b1 = [{}, {}, {}]; @@ -93,6 +103,12 @@ let j1 = [{ a }, { a, b, c }]; let k1 = [{ a, b }]; let l1 = [{ a, b }, { a }]; let m1 = [{ a, b }, { a }, { a }]; -let n1 = [{ a, b }, { a, b }]; -let o1 = [{ a, b }, { a, b, c }]; +let n1 = [ + { a, b }, + { a, b }, +]; +let o1 = [ + { a, b }, + { a, b, c }, +]; diff --git a/crates/rome_js_formatter/tests/specs/js/module/array/empty_lines.js.snap b/crates/rome_js_formatter/tests/specs/js/module/array/empty_lines.js.snap index 4297e1ffd8e5..0df086e22a9d 100644 --- a/crates/rome_js_formatter/tests/specs/js/module/array/empty_lines.js.snap +++ b/crates/rome_js_formatter/tests/specs/js/module/array/empty_lines.js.snap @@ -26,8 +26,7 @@ Quote style: Double Quotes Quote properties: As needed ----- let a = [ - 1, - 2, + 1, 2, 3, diff --git a/crates/rome_js_formatter/tests/specs/prettier/js/arrays/issue-10159.js.snap b/crates/rome_js_formatter/tests/specs/prettier/js/arrays/issue-10159.js.snap deleted file mode 100644 index 70e49fded843..000000000000 --- a/crates/rome_js_formatter/tests/specs/prettier/js/arrays/issue-10159.js.snap +++ /dev/null @@ -1,69 +0,0 @@ ---- -source: crates/rome_js_formatter/tests/prettier_tests.rs ---- - -# Input - -```js -{for (const srcPath of [src, `${src}.js`, `${src}/index`, `${src}/index.js`]) {}} -{for (const srcPath of [123, 123_123_123, 123_123_123_1, 13_123_3123_31_43]) {}} -{for (const srcPath of [123, 123_123_123, 123_123_123_1, 13_123_3123_31_432]) {}} -{for (const srcPath of [123, 123_123_123, 123_123_123_1, 13_123_3123_31_4321]) {}} -``` - - -# Prettier differences - -```diff ---- Prettier -+++ Rome -@@ -7,14 +7,15 @@ - } - } - { -- for (const srcPath of [ -- 123, 123_123_123, 123_123_123_1, 13_123_3123_31_432, -- ]) { -+ for (const srcPath of [123, 123_123_123, 123_123_123_1, 13_123_3123_31_432]) { - } - } - { - for (const srcPath of [ -- 123, 123_123_123, 123_123_123_1, 13_123_3123_31_4321, -+ 123, -+ 123_123_123, -+ 123_123_123_1, -+ 13_123_3123_31_4321, - ]) { - } - } -``` - -# Output - -```js -{ - for (const srcPath of [src, `${src}.js`, `${src}/index`, `${src}/index.js`]) { - } -} -{ - for (const srcPath of [123, 123_123_123, 123_123_123_1, 13_123_3123_31_43]) { - } -} -{ - for (const srcPath of [123, 123_123_123, 123_123_123_1, 13_123_3123_31_432]) { - } -} -{ - for (const srcPath of [ - 123, - 123_123_123, - 123_123_123_1, - 13_123_3123_31_4321, - ]) { - } -} -``` - - - diff --git a/crates/rome_js_formatter/tests/specs/prettier/js/arrays/nested.js.snap b/crates/rome_js_formatter/tests/specs/prettier/js/arrays/nested.js.snap deleted file mode 100644 index db9ef399c05c..000000000000 --- a/crates/rome_js_formatter/tests/specs/prettier/js/arrays/nested.js.snap +++ /dev/null @@ -1,145 +0,0 @@ ---- -source: crates/rome_js_formatter/tests/prettier_tests.rs ---- - -# Input - -```js -[[]]; -[[], []]; -[[], [], []]; -[[], [0], []]; -[[], [0], [0]]; -[[], [0, 1], [0]]; -[[], [0, 1], [0, 1]]; -[[0]]; -[[0], []]; -[[0], [], []]; -[[0], [0], []]; -[[0], [0], [0]]; -[[0], [0, 1], [0]]; -[[0], [0, 1], [0, 1]]; -[[0, 1]]; -[[0, 1], []]; -[[0, 1], [], []]; -[[0, 1], [0], []]; -[[0, 1], [0], [0]]; -[[0, 1], [0, 1], [0]]; -[[0, 1], [0, 1], [0, 1]]; -[[], [1, 2, 3]]; -[[1], [1]]; -[[1, 2], [1, 2, 3]]; -[[1, 0], [1, 0]]; -[{}]; -[{}, {}]; -[{}, {}, {}]; -[{}, { a }]; -[{}, { a, b }]; -[{}, { a, b, c }]; -[{ a }]; -[{ a }, { a }]; -[{ a }, { a }, { a }]; -[{ a }, { a, b }]; -[{ a }, { a, b, c}]; -[{ a, b }]; -[{ a, b }, { a }]; -[{ a, b }, { a }, { a }]; -[{ a, b }, { a, b }]; -[{ a, b }, { a, b, c }]; -``` - - -# Prettier differences - -```diff ---- Prettier -+++ Rome -@@ -18,21 +18,11 @@ - [[0, 1], [0], []]; - [[0, 1], [0], [0]]; - [[0, 1], [0, 1], [0]]; --[ -- [0, 1], -- [0, 1], -- [0, 1], --]; -+[[0, 1], [0, 1], [0, 1]]; - [[], [1, 2, 3]]; - [[1], [1]]; --[ -- [1, 2], -- [1, 2, 3], --]; --[ -- [1, 0], -- [1, 0], --]; -+[[1, 2], [1, 2, 3]]; -+[[1, 0], [1, 0]]; - [{}]; - [{}, {}]; - [{}, {}, {}]; -@@ -47,11 +37,5 @@ - [{ a, b }]; - [{ a, b }, { a }]; - [{ a, b }, { a }, { a }]; --[ -- { a, b }, -- { a, b }, --]; --[ -- { a, b }, -- { a, b, c }, --]; -+[{ a, b }, { a, b }]; -+[{ a, b }, { a, b, c }]; -``` - -# Output - -```js -[[]]; -[[], []]; -[[], [], []]; -[[], [0], []]; -[[], [0], [0]]; -[[], [0, 1], [0]]; -[[], [0, 1], [0, 1]]; -[[0]]; -[[0], []]; -[[0], [], []]; -[[0], [0], []]; -[[0], [0], [0]]; -[[0], [0, 1], [0]]; -[[0], [0, 1], [0, 1]]; -[[0, 1]]; -[[0, 1], []]; -[[0, 1], [], []]; -[[0, 1], [0], []]; -[[0, 1], [0], [0]]; -[[0, 1], [0, 1], [0]]; -[[0, 1], [0, 1], [0, 1]]; -[[], [1, 2, 3]]; -[[1], [1]]; -[[1, 2], [1, 2, 3]]; -[[1, 0], [1, 0]]; -[{}]; -[{}, {}]; -[{}, {}, {}]; -[{}, { a }]; -[{}, { a, b }]; -[{}, { a, b, c }]; -[{ a }]; -[{ a }, { a }]; -[{ a }, { a }, { a }]; -[{ a }, { a, b }]; -[{ a }, { a, b, c }]; -[{ a, b }]; -[{ a, b }, { a }]; -[{ a, b }, { a }, { a }]; -[{ a, b }, { a, b }]; -[{ a, b }, { a, b, c }]; -``` - - - diff --git a/crates/rome_js_formatter/tests/specs/prettier/js/arrays/numbers-negative.js.snap b/crates/rome_js_formatter/tests/specs/prettier/js/arrays/numbers-negative.js.snap index 1c47683d1c7b..c91476bb41aa 100644 --- a/crates/rome_js_formatter/tests/specs/prettier/js/arrays/numbers-negative.js.snap +++ b/crates/rome_js_formatter/tests/specs/prettier/js/arrays/numbers-negative.js.snap @@ -24,107 +24,39 @@ const numbers2 = [-234, -342 // comment3 ```diff --- Prettier +++ Rome -@@ -1,13 +1,46 @@ - const numbers1 = [ -- -2017, -506252, -744011292, -7224, -70.4, -83353.6, -708.4, -174023963.52, -+ -2017, -+ -506252, -+ -744011292, -+ -7224, -+ -70.4, -+ -83353.6, -+ -708.4, -+ -174023963.52, +@@ -2,10 +2,12 @@ + -2017, -506252, -744011292, -7224, -70.4, -83353.6, -708.4, -174023963.52, -40385, // comment1 - -380014, -253951682, -728, -15.84, -2058467564.56, -43, -33, -85134845, - -67092, -1, -78820379, -2371.6, -16, 7, + -380014, -+ -253951682, -+ -728, -+ -15.84, -+ -2058467564.56, -+ -43, -+ -33, -+ -85134845, -+ -67092, -+ -1, -+ -78820379, -+ -2371.6, -+ -16, -+ 7, ++ -253951682, -728, -15.84, -2058467564.56, -43, -33, -85134845, -67092, -1, ++ -78820379, -2371.6, -16, 7, // comment2 - -62454, -4282239912, -10816495.36, 0.88, -100622682, 8.8, -67087.68000000001, -- -3758276, -25.5211, -54, -1184265243, -46073628, -280423.44, -41833463, -- -27961.12, -305.36, -199875.28, + -62454, -+ -4282239912, -+ -10816495.36, -+ 0.88, -+ -100622682, -+ 8.8, -+ -67087.68000000001, -+ -3758276, -+ -25.5211, -+ -54, -+ -1184265243, -+ -46073628, -+ -280423.44, -+ -41833463, -+ -27961.12, -+ -305.36, -+ -199875.28, ++ -4282239912, -10816495.36, 0.88, -100622682, 8.8, -67087.68000000001, + -3758276, -25.5211, -54, -1184265243, -46073628, -280423.44, -41833463, + -27961.12, -305.36, -199875.28, ]; - - const numbers2 = [ ``` # Output ```js const numbers1 = [ - -2017, - -506252, - -744011292, - -7224, - -70.4, - -83353.6, - -708.4, - -174023963.52, + -2017, -506252, -744011292, -7224, -70.4, -83353.6, -708.4, -174023963.52, -40385, // comment1 -380014, - -253951682, - -728, - -15.84, - -2058467564.56, - -43, - -33, - -85134845, - -67092, - -1, - -78820379, - -2371.6, - -16, - 7, + -253951682, -728, -15.84, -2058467564.56, -43, -33, -85134845, -67092, -1, + -78820379, -2371.6, -16, 7, // comment2 -62454, - -4282239912, - -10816495.36, - 0.88, - -100622682, - 8.8, - -67087.68000000001, - -3758276, - -25.5211, - -54, - -1184265243, - -46073628, - -280423.44, - -41833463, - -27961.12, - -305.36, - -199875.28, + -4282239912, -10816495.36, 0.88, -100622682, 8.8, -67087.68000000001, + -3758276, -25.5211, -54, -1184265243, -46073628, -280423.44, -41833463, + -27961.12, -305.36, -199875.28, ]; const numbers2 = [ diff --git a/crates/rome_js_formatter/tests/specs/prettier/js/arrays/numbers-with-tricky-comments.js.snap b/crates/rome_js_formatter/tests/specs/prettier/js/arrays/numbers-with-tricky-comments.js.snap index 1add73a3e240..ef939affd5f4 100644 --- a/crates/rome_js_formatter/tests/specs/prettier/js/arrays/numbers-with-tricky-comments.js.snap +++ b/crates/rome_js_formatter/tests/specs/prettier/js/arrays/numbers-with-tricky-comments.js.snap @@ -20,68 +20,21 @@ const lazyCatererNumbers = [1, 2, 4, 7, 11, 16, 22, 29, 37, 46, ```diff --- Prettier +++ Rome -@@ -1,9 +1,57 @@ +@@ -1,9 +1,11 @@ const lazyCatererNumbers = [ -- 1, 2, 4, 7, 11, 16, 22, 29, 37, 46, 56, 67, 79, 92, 106, 121, 137, 154, 172, + 1, 2, 4, 7, 11, 16, 22, 29, 37, 46, 56, 67, 79, 92, 106, 121, 137, 154, 172, - 191, 211, 232, 254, 277, 301, 326, 352, 379, 407, 436, 466 /*block*/, -+ 1, -+ 2, -+ 4, -+ 7, -+ 11, -+ 16, -+ 22, -+ 29, -+ 37, -+ 46, -+ 56, -+ 67, -+ 79, -+ 92, -+ 106, -+ 121, -+ 137, -+ 154, -+ 172, -+ 191, -+ 211, -+ 232, -+ 254, -+ 277, -+ 301, -+ 326, -+ 352, -+ 379, -+ 407, -+ 436, -+ 466, /*block*/ ++ 191, 211, 232, 254, 277, 301, 326, 352, 379, 407, 436, 466, /*block*/ // line - 497, 529, 562, 596, 631, 667, 704, 742, 781, 821, 862, 904, 947, 991, 1036, - 1082, 1129, 1177, 1226, + 497, -+ 529, -+ 562, -+ 596, -+ 631, -+ 667, -+ 704, -+ 742, -+ 781, -+ 821, -+ 862, -+ 904, -+ 947, -+ 991, -+ 1036, -+ 1082, -+ 1129, -+ 1177, -+ 1226, ++ 529, 562, 596, 631, 667, 704, 742, 781, 821, 862, 904, 947, 991, 1036, 1082, ++ 1129, 1177, 1226, // line 2 - 1276, 1327, 1379, + 1276, -+ 1327, -+ 1379, ++ 1327, 1379, ]; ``` @@ -89,61 +42,15 @@ const lazyCatererNumbers = [1, 2, 4, 7, 11, 16, 22, 29, 37, 46, ```js const lazyCatererNumbers = [ - 1, - 2, - 4, - 7, - 11, - 16, - 22, - 29, - 37, - 46, - 56, - 67, - 79, - 92, - 106, - 121, - 137, - 154, - 172, - 191, - 211, - 232, - 254, - 277, - 301, - 326, - 352, - 379, - 407, - 436, - 466, /*block*/ + 1, 2, 4, 7, 11, 16, 22, 29, 37, 46, 56, 67, 79, 92, 106, 121, 137, 154, 172, + 191, 211, 232, 254, 277, 301, 326, 352, 379, 407, 436, 466, /*block*/ // line 497, - 529, - 562, - 596, - 631, - 667, - 704, - 742, - 781, - 821, - 862, - 904, - 947, - 991, - 1036, - 1082, - 1129, - 1177, - 1226, + 529, 562, 596, 631, 667, 704, 742, 781, 821, 862, 904, 947, 991, 1036, 1082, + 1129, 1177, 1226, // line 2 1276, - 1327, - 1379, + 1327, 1379, ]; ``` diff --git a/crates/rome_js_formatter/tests/specs/prettier/js/arrays/numbers2.js.snap b/crates/rome_js_formatter/tests/specs/prettier/js/arrays/numbers2.js.snap deleted file mode 100644 index c5bc779afa8d..000000000000 --- a/crates/rome_js_formatter/tests/specs/prettier/js/arrays/numbers2.js.snap +++ /dev/null @@ -1,138 +0,0 @@ ---- -source: crates/rome_js_formatter/tests/prettier_tests.rs ---- - -# Input - -```js -const userIds1 = [ - 7234932941, - 7234932722, - 7234932312, - 7234932933, -]; - -const userIds2 = [ - 7234932941, - 7234932722, - 7234932312, - 7234932933, - 7234932841, - 7234932166, - 7234932843, - 7234932978, - 7234932436, -]; - -const userIds3 = [ - 7234932941, - 7234932722, - 7234932312, - 7234932933, - 7234932841, - 7234932166, - 7234932843, - - 7234932978, - 7234932436, -]; - -const userIds4 = [ - 7234932941, - 7234932722, - 7234932312, - 7234932933, - 7234932841, - 7234932166, - // comment 1 - 7234932843, - - 7234932978, - - // comment 2 - 7234932436, - // comment 3 -]; - -``` - - -# Prettier differences - -```diff ---- Prettier -+++ Rome -@@ -6,14 +6,25 @@ - ]; - - const userIds3 = [ -- 7234932941, 7234932722, 7234932312, 7234932933, 7234932841, 7234932166, -+ 7234932941, -+ 7234932722, -+ 7234932312, -+ 7234932933, -+ 7234932841, -+ 7234932166, - 7234932843, - -- 7234932978, 7234932436, -+ 7234932978, -+ 7234932436, - ]; - - const userIds4 = [ -- 7234932941, 7234932722, 7234932312, 7234932933, 7234932841, 7234932166, -+ 7234932941, -+ 7234932722, -+ 7234932312, -+ 7234932933, -+ 7234932841, -+ 7234932166, - // comment 1 - 7234932843, - -``` - -# Output - -```js -const userIds1 = [7234932941, 7234932722, 7234932312, 7234932933]; - -const userIds2 = [ - 7234932941, 7234932722, 7234932312, 7234932933, 7234932841, 7234932166, - 7234932843, 7234932978, 7234932436, -]; - -const userIds3 = [ - 7234932941, - 7234932722, - 7234932312, - 7234932933, - 7234932841, - 7234932166, - 7234932843, - - 7234932978, - 7234932436, -]; - -const userIds4 = [ - 7234932941, - 7234932722, - 7234932312, - 7234932933, - 7234932841, - 7234932166, - // comment 1 - 7234932843, - - 7234932978, - - // comment 2 - 7234932436, - // comment 3 -]; -``` - - - diff --git a/crates/rome_js_formatter/tests/specs/prettier/js/arrays/numbers3.js.snap b/crates/rome_js_formatter/tests/specs/prettier/js/arrays/numbers3.js.snap deleted file mode 100644 index abed3e25f9ad..000000000000 --- a/crates/rome_js_formatter/tests/specs/prettier/js/arrays/numbers3.js.snap +++ /dev/null @@ -1,262 +0,0 @@ ---- -source: crates/rome_js_formatter/tests/prettier_tests.rs ---- - -# Input - -```js -let test_case = [ - [ - 66,57,45,47,33,53,82,81,76,78,10,78,15,98,24,29,32,27,28,76,41,65,84,35, - 97,90,75,24,88,45,23,75,63,86,24,39,9,51,33,40,58,17,49,86,63,59,97,91, - 98,99,5,69,51,44,34,69,17,91,27,83,26,34,93,29,66,88,49,33,49,73,9,81,4, - 36,5,14,43,31,86,27,39,75,98,99,55,19,39,21,85,86,46,82,11,44,48,77,35, - 48,78,97 - ], - [ - 41,83,31,62,15,70,10,90,/*21,*/48,39,76,14,48,63,62,16,17,61,97,86,80,34,27, - 39,53,90,80,56,71,31,22,29,7,71,90,65,17,48,85,14,94,16,32,4,96,49,97, - 53,87,54,2,78,37,21,3,97,62,93,62,11,27,14,29,64,44,11,5,39,43,94,52,0, - 4,86,58,63,42,97,54,2,1,53,17,92,79,52,47,81,93,34,17,93,20,61,68,58,49, - 27,45 - ] -]; -``` - - -# Prettier differences - -```diff ---- Prettier -+++ Rome -@@ -8,11 +8,104 @@ - 35, 48, 78, 97, - ], - [ -- 41, 83, 31, 62, 15, 70, 10, 90, /*21,*/ 48, 39, 76, 14, 48, 63, 62, 16, 17, -- 61, 97, 86, 80, 34, 27, 39, 53, 90, 80, 56, 71, 31, 22, 29, 7, 71, 90, 65, -- 17, 48, 85, 14, 94, 16, 32, 4, 96, 49, 97, 53, 87, 54, 2, 78, 37, 21, 3, 97, -- 62, 93, 62, 11, 27, 14, 29, 64, 44, 11, 5, 39, 43, 94, 52, 0, 4, 86, 58, 63, -- 42, 97, 54, 2, 1, 53, 17, 92, 79, 52, 47, 81, 93, 34, 17, 93, 20, 61, 68, -- 58, 49, 27, 45, -+ 41, -+ 83, -+ 31, -+ 62, -+ 15, -+ 70, -+ 10, -+ 90, /*21,*/ -+ 48, -+ 39, -+ 76, -+ 14, -+ 48, -+ 63, -+ 62, -+ 16, -+ 17, -+ 61, -+ 97, -+ 86, -+ 80, -+ 34, -+ 27, -+ 39, -+ 53, -+ 90, -+ 80, -+ 56, -+ 71, -+ 31, -+ 22, -+ 29, -+ 7, -+ 71, -+ 90, -+ 65, -+ 17, -+ 48, -+ 85, -+ 14, -+ 94, -+ 16, -+ 32, -+ 4, -+ 96, -+ 49, -+ 97, -+ 53, -+ 87, -+ 54, -+ 2, -+ 78, -+ 37, -+ 21, -+ 3, -+ 97, -+ 62, -+ 93, -+ 62, -+ 11, -+ 27, -+ 14, -+ 29, -+ 64, -+ 44, -+ 11, -+ 5, -+ 39, -+ 43, -+ 94, -+ 52, -+ 0, -+ 4, -+ 86, -+ 58, -+ 63, -+ 42, -+ 97, -+ 54, -+ 2, -+ 1, -+ 53, -+ 17, -+ 92, -+ 79, -+ 52, -+ 47, -+ 81, -+ 93, -+ 34, -+ 17, -+ 93, -+ 20, -+ 61, -+ 68, -+ 58, -+ 49, -+ 27, -+ 45, - ], - ]; -``` - -# Output - -```js -let test_case = [ - [ - 66, 57, 45, 47, 33, 53, 82, 81, 76, 78, 10, 78, 15, 98, 24, 29, 32, 27, 28, - 76, 41, 65, 84, 35, 97, 90, 75, 24, 88, 45, 23, 75, 63, 86, 24, 39, 9, 51, - 33, 40, 58, 17, 49, 86, 63, 59, 97, 91, 98, 99, 5, 69, 51, 44, 34, 69, 17, - 91, 27, 83, 26, 34, 93, 29, 66, 88, 49, 33, 49, 73, 9, 81, 4, 36, 5, 14, 43, - 31, 86, 27, 39, 75, 98, 99, 55, 19, 39, 21, 85, 86, 46, 82, 11, 44, 48, 77, - 35, 48, 78, 97, - ], - [ - 41, - 83, - 31, - 62, - 15, - 70, - 10, - 90, /*21,*/ - 48, - 39, - 76, - 14, - 48, - 63, - 62, - 16, - 17, - 61, - 97, - 86, - 80, - 34, - 27, - 39, - 53, - 90, - 80, - 56, - 71, - 31, - 22, - 29, - 7, - 71, - 90, - 65, - 17, - 48, - 85, - 14, - 94, - 16, - 32, - 4, - 96, - 49, - 97, - 53, - 87, - 54, - 2, - 78, - 37, - 21, - 3, - 97, - 62, - 93, - 62, - 11, - 27, - 14, - 29, - 64, - 44, - 11, - 5, - 39, - 43, - 94, - 52, - 0, - 4, - 86, - 58, - 63, - 42, - 97, - 54, - 2, - 1, - 53, - 17, - 92, - 79, - 52, - 47, - 81, - 93, - 34, - 17, - 93, - 20, - 61, - 68, - 58, - 49, - 27, - 45, - ], -]; -``` - - - diff --git a/crates/rome_js_formatter/tests/specs/prettier/js/arrays/preserve_empty_lines.js.snap b/crates/rome_js_formatter/tests/specs/prettier/js/arrays/preserve_empty_lines.js.snap deleted file mode 100644 index 07ccf6d9b012..000000000000 --- a/crates/rome_js_formatter/tests/specs/prettier/js/arrays/preserve_empty_lines.js.snap +++ /dev/null @@ -1,52 +0,0 @@ ---- -source: crates/rome_js_formatter/tests/prettier_tests.rs ---- - -# Input - -```js -a = [ - - 1, - 2, - - 3, - - - 4, - - -] -``` - - -# Prettier differences - -```diff ---- Prettier -+++ Rome -@@ -1,5 +1,6 @@ - a = [ -- 1, 2, -+ 1, -+ 2, - - 3, - -``` - -# Output - -```js -a = [ - 1, - 2, - - 3, - - 4, -]; -``` - - - diff --git a/crates/rome_js_formatter/tests/specs/prettier/js/test-declarations/jest-each-template-string.js.snap b/crates/rome_js_formatter/tests/specs/prettier/js/test-declarations/jest-each-template-string.js.snap index 28cff7c056b7..e141a07c870c 100644 --- a/crates/rome_js_formatter/tests/specs/prettier/js/test-declarations/jest-each-template-string.js.snap +++ b/crates/rome_js_formatter/tests/specs/prettier/js/test-declarations/jest-each-template-string.js.snap @@ -27,7 +27,7 @@ ${[{ start: 1, end: 3 },{ start: 15, end: 20 }, { start: 15, end: 20 },]}| ```diff --- Prettier +++ Rome -@@ -1,13 +1,13 @@ +@@ -1,13 +1,23 @@ test.each` - a | b | c - ${1} | ${[{ start: 5, end: 15 }]} | ${[1, 2, 3, 4, 5, 6, 7, 8]} @@ -38,7 +38,10 @@ ${[{ start: 1, end: 3 },{ start: 15, end: 20 }, { start: 15, end: 20 },]}| +${1} | ${[{ start: 5, end: 15 }]} | ${[1, 2, 3, 4, 5, 6, 7, 8]} +${1}| ${[{ start: 5, end: 15 }]} | ${["test", "string", "for", "prettier"]} +${3} | ${[{ start: 5, end: 15 }]} | ${[]} -+${4} | ${[{ start: 1, end: 3 }, { start: 15, end: 20 }]} | ${[]} ++${4} | ${[ ++ { start: 1, end: 3 }, ++ { start: 15, end: 20 }, ++]} | ${[]} `("example test", ({ a, b, c }) => {}); test.each` @@ -46,8 +49,15 @@ ${[{ start: 1, end: 3 },{ start: 15, end: 20 }, { start: 15, end: 20 },]}| - ${[{ a: 1, b: 3 }, { c: 15, d: 20 }]} - ${[{ start: 1, end: 3 }, { start: 15, end: 20 }, { start: 15, end: 20 }]} +a | -+${[{ a: 1, b: 3 }, { c: 15, d: 20 }]}| -+${[{ start: 1, end: 3 }, { start: 15, end: 20 }, { start: 15, end: 20 }]}| ++${[ ++ { a: 1, b: 3 }, ++ { c: 15, d: 20 }, ++]}| ++${[ ++ { start: 1, end: 3 }, ++ { start: 15, end: 20 }, ++ { start: 15, end: 20 }, ++]}| `("example test", ({ a, b, c }) => {}); ``` @@ -59,13 +69,23 @@ a | b | c ${1} | ${[{ start: 5, end: 15 }]} | ${[1, 2, 3, 4, 5, 6, 7, 8]} ${1}| ${[{ start: 5, end: 15 }]} | ${["test", "string", "for", "prettier"]} ${3} | ${[{ start: 5, end: 15 }]} | ${[]} -${4} | ${[{ start: 1, end: 3 }, { start: 15, end: 20 }]} | ${[]} +${4} | ${[ + { start: 1, end: 3 }, + { start: 15, end: 20 }, +]} | ${[]} `("example test", ({ a, b, c }) => {}); test.each` a | -${[{ a: 1, b: 3 }, { c: 15, d: 20 }]}| -${[{ start: 1, end: 3 }, { start: 15, end: 20 }, { start: 15, end: 20 }]}| +${[ + { a: 1, b: 3 }, + { c: 15, d: 20 }, +]}| +${[ + { start: 1, end: 3 }, + { start: 15, end: 20 }, + { start: 15, end: 20 }, +]}| `("example test", ({ a, b, c }) => {}); ``` diff --git a/crates/rome_js_formatter/tests/specs/prettier/js/test-declarations/jest-each.js.snap b/crates/rome_js_formatter/tests/specs/prettier/js/test-declarations/jest-each.js.snap index a1b7c99036ab..666244615685 100644 --- a/crates/rome_js_formatter/tests/specs/prettier/js/test-declarations/jest-each.js.snap +++ b/crates/rome_js_formatter/tests/specs/prettier/js/test-declarations/jest-each.js.snap @@ -88,7 +88,7 @@ test.each([ `("$a + $b", ({ a, b, expected }) => { test(`returns ${expected}`, () => { expect(a + b).toBe(expected); -@@ -18,53 +18,48 @@ +@@ -18,36 +18,32 @@ }); describe.only.each` @@ -141,32 +141,6 @@ test.each([ describe.each([1, 2, 3])("test", (a) => { expect(a).toBe(a); - }); - --test.only.each([ -- [1, 1, 2], -- [1, 2, 3], -- [2, 1, 3], --])(".add(%i, %i)", (a, b, expected) => { -+test.only.each([[1, 1, 2], [1, 2, 3], [2, 1, 3]])(".add(%i, %i)", ( -+ a, -+ b, -+ expected, -+) => { - expect(a + b).toBe(expected); - }); - --test.each([ -- { a: "1", b: 1 }, -- { a: "2", b: 2 }, -- { a: "3", b: 3 }, --])("test", ({ a, b }) => { -+test.each([{ a: "1", b: 1 }, { a: "2", b: 2 }, { a: "3", b: 3 }])("test", ({ -+ a, -+ b, -+}) => { - expect(Number(a)).toBe(b); - }); ``` # Output @@ -223,18 +197,19 @@ describe.each([1, 2, 3])("test", (a) => { expect(a).toBe(a); }); -test.only.each([[1, 1, 2], [1, 2, 3], [2, 1, 3]])(".add(%i, %i)", ( - a, - b, - expected, -) => { +test.only.each([ + [1, 1, 2], + [1, 2, 3], + [2, 1, 3], +])(".add(%i, %i)", (a, b, expected) => { expect(a + b).toBe(expected); }); -test.each([{ a: "1", b: 1 }, { a: "2", b: 2 }, { a: "3", b: 3 }])("test", ({ - a, - b, -}) => { +test.each([ + { a: "1", b: 1 }, + { a: "2", b: 2 }, + { a: "3", b: 3 }, +])("test", ({ a, b }) => { expect(Number(a)).toBe(b); }); ``` diff --git a/crates/rome_js_formatter/tests/specs/prettier/js/trailing-comma/trailing_whitespace.js.snap b/crates/rome_js_formatter/tests/specs/prettier/js/trailing-comma/trailing_whitespace.js.snap index 400d2027cc4f..7e736ed49a8a 100644 --- a/crates/rome_js_formatter/tests/specs/prettier/js/trailing-comma/trailing_whitespace.js.snap +++ b/crates/rome_js_formatter/tests/specs/prettier/js/trailing-comma/trailing_whitespace.js.snap @@ -56,13 +56,7 @@ this.getAttribute(function(s) /*string*/ { ```diff --- Prettier +++ Rome -@@ -1,12 +1,11 @@ - let example = [ -- "FOO", -- "BAR", -+ "FOO", "BAR", - // Comment - ]; +@@ -6,7 +6,7 @@ foo( {}, @@ -71,7 +65,7 @@ this.getAttribute(function(s) /*string*/ { ); o = { -@@ -16,7 +15,6 @@ +@@ -16,7 +16,6 @@ o = { state, @@ -79,7 +73,7 @@ this.getAttribute(function(s) /*string*/ { // Comment }; -@@ -35,7 +33,8 @@ +@@ -35,7 +34,8 @@ a; } @@ -95,7 +89,8 @@ this.getAttribute(function(s) /*string*/ { ```js let example = [ - "FOO", "BAR", + "FOO", + "BAR", // Comment ]; diff --git a/crates/rome_js_formatter/tests/specs/prettier/typescript/cast/generic-cast.ts.snap b/crates/rome_js_formatter/tests/specs/prettier/typescript/cast/generic-cast.ts.snap index 851a77fc7c14..2427021a17eb 100644 --- a/crates/rome_js_formatter/tests/specs/prettier/typescript/cast/generic-cast.ts.snap +++ b/crates/rome_js_formatter/tests/specs/prettier/typescript/cast/generic-cast.ts.snap @@ -140,18 +140,7 @@ function x() { | undefined >someExistingConfigMap.mergeDeep( fallbackOptions.someMethodWithLongName(param1, param2), -@@ -79,9 +77,7 @@ - >{ property1: "myPropertyVal" }; - - const testArrayLiteral = >[ -- "first", -- "second", -- "third", -+ "first", "second", "third", - ]; - - const testArrayLiteral2 = < -@@ -111,9 +107,9 @@ +@@ -111,9 +109,9 @@ const fitsObjLiteral = | undefined>{ a: "test" }; const fitsArrayLiteral = | undefined>["t1", "t2"]; @@ -164,7 +153,7 @@ function x() { const stillTooLong = < PermissionsChecker | undefined | number | string | boolean -@@ -129,11 +125,11 @@ +@@ -129,11 +127,11 @@ | never >(permissions)[receiverType]; @@ -181,17 +170,6 @@ function x() { const stillTooLong4 = < | PermissionsChecker -@@ -163,9 +159,7 @@ - >{ prop1: "myPropVal" }; - - const testArrayLiteral = | undefined>[ -- "first", -- "second", -- "third", -+ "first", "second", "third", - ]; - - const testArrayLiteral2 = < ``` # Output @@ -276,7 +254,9 @@ function y() { >{ property1: "myPropertyVal" }; const testArrayLiteral = >[ - "first", "second", "third", + "first", + "second", + "third", ]; const testArrayLiteral2 = < @@ -358,7 +338,9 @@ function x() { >{ prop1: "myPropVal" }; const testArrayLiteral = | undefined>[ - "first", "second", "third", + "first", + "second", + "third", ]; const testArrayLiteral2 = <