From 3d99ce3c3a84e6e05d3bf876a3eb90c848943198 Mon Sep 17 00:00:00 2001 From: Micha Reiser Date: Tue, 16 Aug 2022 16:53:16 +0100 Subject: [PATCH] feat(rome_js_formatter): Member assignment formatting (#3061) --- .../assignments/computed_member_assignment.rs | 20 +-- .../assignments/static_member_assignment.rs | 11 +- .../expressions/computed_member_expression.rs | 114 +++++++++--- .../expressions/static_member_expression.rs | 162 +++++++++++------- .../declarations/variable_declaration.js.snap | 135 ++++++++------- .../import_meta_expression.js.snap | 16 +- .../prettier/js/assignment/issue-1966.js.snap | 45 ----- .../prettier/js/assignment/issue-4094.js.snap | 39 ----- .../prettier/js/classes/assignment.js.snap | 23 +-- .../js/method-chain/bracket_0.js.snap | 56 ------ .../js/method-chain/break-last-member.js.snap | 19 +- .../typescript/assignment/lone-arg.ts.snap | 46 ----- .../type_assertion_assignment.ts.snap | 4 +- 13 files changed, 294 insertions(+), 396 deletions(-) delete mode 100644 crates/rome_js_formatter/tests/specs/prettier/js/assignment/issue-1966.js.snap delete mode 100644 crates/rome_js_formatter/tests/specs/prettier/js/assignment/issue-4094.js.snap delete mode 100644 crates/rome_js_formatter/tests/specs/prettier/js/method-chain/bracket_0.js.snap delete mode 100644 crates/rome_js_formatter/tests/specs/prettier/typescript/assignment/lone-arg.ts.snap diff --git a/crates/rome_js_formatter/src/js/assignments/computed_member_assignment.rs b/crates/rome_js_formatter/src/js/assignments/computed_member_assignment.rs index dab0a4e12a13..7d6cf28d91af 100644 --- a/crates/rome_js_formatter/src/js/assignments/computed_member_assignment.rs +++ b/crates/rome_js_formatter/src/js/assignments/computed_member_assignment.rs @@ -1,8 +1,7 @@ use crate::prelude::*; -use rome_formatter::write; +use crate::js::expressions::computed_member_expression::JsAnyComputedMemberLike; use rome_js_syntax::JsComputedMemberAssignment; -use rome_js_syntax::JsComputedMemberAssignmentFields; #[derive(Debug, Clone, Default)] pub struct FormatJsComputedMemberAssignment; @@ -13,21 +12,6 @@ impl FormatNodeRule for FormatJsComputedMemberAssign node: &JsComputedMemberAssignment, f: &mut JsFormatter, ) -> FormatResult<()> { - let JsComputedMemberAssignmentFields { - object, - l_brack_token, - member, - r_brack_token, - } = node.as_fields(); - - write!( - f, - [ - object.format(), - l_brack_token.format(), - member.format(), - r_brack_token.format(), - ] - ) + JsAnyComputedMemberLike::from(node.clone()).fmt(f) } } diff --git a/crates/rome_js_formatter/src/js/assignments/static_member_assignment.rs b/crates/rome_js_formatter/src/js/assignments/static_member_assignment.rs index 59c544acc39c..af261194f0b2 100644 --- a/crates/rome_js_formatter/src/js/assignments/static_member_assignment.rs +++ b/crates/rome_js_formatter/src/js/assignments/static_member_assignment.rs @@ -1,19 +1,12 @@ +use crate::js::expressions::static_member_expression::JsAnyStaticMemberLike; use crate::prelude::*; -use rome_formatter::write; use rome_js_syntax::JsStaticMemberAssignment; -use rome_js_syntax::JsStaticMemberAssignmentFields; #[derive(Debug, Clone, Default)] pub struct FormatJsStaticMemberAssignment; impl FormatNodeRule for FormatJsStaticMemberAssignment { fn fmt_fields(&self, node: &JsStaticMemberAssignment, f: &mut JsFormatter) -> FormatResult<()> { - let JsStaticMemberAssignmentFields { - object, - dot_token, - member, - } = node.as_fields(); - - write![f, [object.format(), dot_token.format(), member.format(),]] + JsAnyStaticMemberLike::from(node.clone()).fmt(f) } } diff --git a/crates/rome_js_formatter/src/js/expressions/computed_member_expression.rs b/crates/rome_js_formatter/src/js/expressions/computed_member_expression.rs index e5652c93ace6..eb98a8fa1e1c 100644 --- a/crates/rome_js_formatter/src/js/expressions/computed_member_expression.rs +++ b/crates/rome_js_formatter/src/js/expressions/computed_member_expression.rs @@ -1,8 +1,11 @@ use crate::prelude::*; use rome_formatter::{format_args, write}; -use rome_js_syntax::JsComputedMemberExpression; -use rome_js_syntax::JsComputedMemberExpressionFields; +use rome_js_syntax::JsSyntaxToken; +use rome_js_syntax::{ + JsAnyExpression, JsAnyLiteralExpression, JsComputedMemberAssignment, JsComputedMemberExpression, +}; +use rome_rowan::{declare_node_union, SyntaxResult}; #[derive(Debug, Clone, Default)] pub struct FormatJsComputedMemberExpression; @@ -13,26 +16,91 @@ impl FormatNodeRule for FormatJsComputedMemberExpres node: &JsComputedMemberExpression, f: &mut JsFormatter, ) -> FormatResult<()> { - let JsComputedMemberExpressionFields { - object, - optional_chain_token, - l_brack_token, - member, - r_brack_token, - } = node.as_fields(); - - write![ - f, - [ - object.format(), - group(&format_args![ - optional_chain_token.format(), - l_brack_token.format(), - soft_line_break(), - soft_block_indent(&member.format()), - r_brack_token.format() - ]), - ] - ] + JsAnyComputedMemberLike::from(node.clone()).fmt(f) + } +} + +declare_node_union! { + pub(crate) JsAnyComputedMemberLike = JsComputedMemberExpression | JsComputedMemberAssignment +} + +impl Format for JsAnyComputedMemberLike { + fn fmt(&self, f: &mut Formatter) -> FormatResult<()> { + write!(f, [self.object().format()])?; + + match self.member()? { + JsAnyExpression::JsAnyLiteralExpression( + JsAnyLiteralExpression::JsNumberLiteralExpression(literal), + ) => { + write!( + f, + [ + self.optional_chain_token().format(), + self.l_brack_token().format(), + literal.format(), + self.r_brack_token().format() + ] + ) + } + member => { + write![ + f, + [group(&format_args![ + self.optional_chain_token().format(), + self.l_brack_token().format(), + soft_line_break(), + soft_block_indent(&member.format()), + self.r_brack_token().format() + ]),] + ] + } + } + } +} + +impl JsAnyComputedMemberLike { + fn object(&self) -> SyntaxResult { + match self { + JsAnyComputedMemberLike::JsComputedMemberExpression(expression) => expression.object(), + JsAnyComputedMemberLike::JsComputedMemberAssignment(assignment) => assignment.object(), + } + } + + fn l_brack_token(&self) -> SyntaxResult { + match self { + JsAnyComputedMemberLike::JsComputedMemberExpression(expression) => { + expression.l_brack_token() + } + JsAnyComputedMemberLike::JsComputedMemberAssignment(assignment) => { + assignment.l_brack_token() + } + } + } + + fn optional_chain_token(&self) -> Option { + match self { + JsAnyComputedMemberLike::JsComputedMemberExpression(expression) => { + expression.optional_chain_token() + } + JsAnyComputedMemberLike::JsComputedMemberAssignment(_) => None, + } + } + + fn member(&self) -> SyntaxResult { + match self { + JsAnyComputedMemberLike::JsComputedMemberExpression(expression) => expression.member(), + JsAnyComputedMemberLike::JsComputedMemberAssignment(assignment) => assignment.member(), + } + } + + fn r_brack_token(&self) -> SyntaxResult { + match self { + JsAnyComputedMemberLike::JsComputedMemberExpression(expression) => { + expression.r_brack_token() + } + JsAnyComputedMemberLike::JsComputedMemberAssignment(assignment) => { + assignment.r_brack_token() + } + } } } diff --git a/crates/rome_js_formatter/src/js/expressions/static_member_expression.rs b/crates/rome_js_formatter/src/js/expressions/static_member_expression.rs index 8f6805c3be7e..ea1fc40f45db 100644 --- a/crates/rome_js_formatter/src/js/expressions/static_member_expression.rs +++ b/crates/rome_js_formatter/src/js/expressions/static_member_expression.rs @@ -1,38 +1,52 @@ use crate::prelude::*; +use crate::js::expressions::computed_member_expression::JsAnyComputedMemberLike; use rome_formatter::{format_args, write}; use rome_js_syntax::{ - JsAnyExpression, JsAssignmentExpression, JsStaticMemberExpression, - JsStaticMemberExpressionFields, JsVariableDeclarator, + JsAnyAssignment, JsAnyAssignmentPattern, JsAnyExpression, JsAnyName, JsAssignmentExpression, + JsInitializerClause, JsStaticMemberAssignment, JsStaticMemberExpression, JsSyntaxToken, }; -use rome_rowan::AstNode; +use rome_rowan::{declare_node_union, AstNode, SyntaxResult}; #[derive(Debug, Clone, Default)] pub struct FormatJsStaticMemberExpression; impl FormatNodeRule for FormatJsStaticMemberExpression { fn fmt_fields(&self, node: &JsStaticMemberExpression, f: &mut JsFormatter) -> FormatResult<()> { - let JsStaticMemberExpressionFields { - object, - operator_token, - member, - } = node.as_fields(); + JsAnyStaticMemberLike::from(node.clone()).fmt(f) + } +} - write!(f, [object.format()])?; +#[derive(Debug, Copy, Clone)] +enum StaticMemberLikeLayout { + /// Forces that there's no line break between the object, operator, and member + NoBreak, - let layout = compute_member_layout(node)?; + /// Breaks the static member expression after the object if the whole expression doesn't fit on a single line + BreakAfterObject, +} + +declare_node_union! { + pub(crate) JsAnyStaticMemberLike = JsStaticMemberExpression | JsStaticMemberAssignment +} + +impl Format for JsAnyStaticMemberLike { + fn fmt(&self, f: &mut Formatter) -> FormatResult<()> { + write!(f, [self.object().format()])?; + + let layout = self.layout()?; match layout { - StaticMemberExpressionLayout::NoBreak => { - write!(f, [operator_token.format(), member.format()]) + StaticMemberLikeLayout::NoBreak => { + write!(f, [self.operator_token().format(), self.member().format()]) } - StaticMemberExpressionLayout::BreakAfterObject => { + StaticMemberLikeLayout::BreakAfterObject => { write!( f, [group(&indent(&format_args![ soft_line_break(), - operator_token.format(), - member.format(), + self.operator_token().format(), + self.member().format(), ]))] ) } @@ -40,63 +54,91 @@ impl FormatNodeRule for FormatJsStaticMemberExpression } } -enum StaticMemberExpressionLayout { - /// Forces that there's no line break between the object, operator, and member - NoBreak, +impl JsAnyStaticMemberLike { + fn object(&self) -> SyntaxResult { + match self { + JsAnyStaticMemberLike::JsStaticMemberExpression(expression) => expression.object(), + JsAnyStaticMemberLike::JsStaticMemberAssignment(assignment) => assignment.object(), + } + } - /// Breaks the static member expression after the object if the whole expression doesn't fit on a single line - BreakAfterObject, -} + fn operator_token(&self) -> SyntaxResult { + match self { + JsAnyStaticMemberLike::JsStaticMemberExpression(expression) => { + expression.operator_token() + } + JsAnyStaticMemberLike::JsStaticMemberAssignment(assignment) => assignment.dot_token(), + } + } -fn compute_member_layout( - member: &JsStaticMemberExpression, -) -> FormatResult { - let parent = member.syntax().parent(); - - let nested = parent - .as_ref() - .map_or(false, |p| JsStaticMemberExpression::can_cast(p.kind())); - - if let Some(parent) = &parent { - if JsAssignmentExpression::can_cast(parent.kind()) - || JsVariableDeclarator::can_cast(parent.kind()) - { - let no_break = match member.object()? { - JsAnyExpression::JsCallExpression(call_expression) => { - !call_expression.arguments()?.args().is_empty() - } - JsAnyExpression::TsNonNullAssertionExpression(non_null_assertion) => { - match non_null_assertion.expression()? { + fn member(&self) -> SyntaxResult { + match self { + JsAnyStaticMemberLike::JsStaticMemberExpression(expression) => expression.member(), + JsAnyStaticMemberLike::JsStaticMemberAssignment(assignment) => assignment.member(), + } + } + + fn layout(&self) -> SyntaxResult { + let parent = self.syntax().parent(); + let object = self.object()?; + + let is_nested = match &parent { + Some(parent) => { + if JsAssignmentExpression::can_cast(parent.kind()) + || JsInitializerClause::can_cast(parent.kind()) + { + let no_break = match &object { JsAnyExpression::JsCallExpression(call_expression) => { !call_expression.arguments()?.args().is_empty() } + JsAnyExpression::TsNonNullAssertionExpression(non_null_assertion) => { + match non_null_assertion.expression()? { + JsAnyExpression::JsCallExpression(call_expression) => { + !call_expression.arguments()?.args().is_empty() + } + _ => false, + } + } _ => false, + }; + + if no_break { + return Ok(StaticMemberLikeLayout::NoBreak); } } - _ => false, - }; - if no_break { - return Ok(StaticMemberExpressionLayout::NoBreak); + JsAnyStaticMemberLike::can_cast(parent.kind()) + || JsAnyComputedMemberLike::can_cast(parent.kind()) } - } - }; + None => false, + }; - if !nested && matches!(member.object()?, JsAnyExpression::JsIdentifierExpression(_)) { - return Ok(StaticMemberExpressionLayout::NoBreak); - } + if !is_nested && matches!(&object, JsAnyExpression::JsIdentifierExpression(_)) { + return Ok(StaticMemberLikeLayout::NoBreak); + } - let first_non_static_member_ancestor = member - .syntax() - .ancestors() - .find(|parent| !JsStaticMemberExpression::can_cast(parent.kind())); + let first_non_static_member_ancestor = self.syntax().ancestors().find(|parent| { + !JsAnyStaticMemberLike::can_cast(parent.kind()) + || JsAnyComputedMemberLike::can_cast(parent.kind()) + }); + + let layout = match first_non_static_member_ancestor.and_then(JsAnyExpression::cast) { + Some(JsAnyExpression::JsNewExpression(_)) => StaticMemberLikeLayout::NoBreak, + Some(JsAnyExpression::JsAssignmentExpression(assignment)) => { + if matches!( + assignment.left()?, + JsAnyAssignmentPattern::JsAnyAssignment( + JsAnyAssignment::JsIdentifierAssignment(_) + ) + ) { + StaticMemberLikeLayout::BreakAfterObject + } else { + StaticMemberLikeLayout::NoBreak + } + } + _ => StaticMemberLikeLayout::BreakAfterObject, + }; - if matches!( - first_non_static_member_ancestor.and_then(JsAnyExpression::cast), - Some(JsAnyExpression::JsNewExpression(_)) - ) { - return Ok(StaticMemberExpressionLayout::NoBreak); + Ok(layout) } - - Ok(StaticMemberExpressionLayout::BreakAfterObject) } diff --git a/crates/rome_js_formatter/tests/specs/js/module/declarations/variable_declaration.js.snap b/crates/rome_js_formatter/tests/specs/js/module/declarations/variable_declaration.js.snap index 06140e035188..0d4582028549 100644 --- a/crates/rome_js_formatter/tests/specs/js/module/declarations/variable_declaration.js.snap +++ b/crates/rome_js_formatter/tests/specs/js/module/declarations/variable_declaration.js.snap @@ -382,8 +382,9 @@ var loooooooooooooooooooooooooong1 = aaaaaaaaaaaaaaaaaaaa, ); let loooooooooooooooooooooooooong2 = - objdddddddddectobjdddddddddect(aaaaaaaaaaaaaaaaaaaa) - .ewqeqewqweqweqweqweqweqweqw; + objdddddddddectobjdddddddddect( + aaaaaaaaaaaaaaaaaaaa, + ).ewqeqewqweqweqweqweqweqweqw; let loooooooooooooooooooooooooong3 = objdddddddddectobjdddddddddect(aaaaaaaaaaaaaaaaaaaa)[dsadsadsadsadsadsadsa]() .ewqoewqoeiowqieopwqie; @@ -397,8 +398,9 @@ var loooooooooooooooooooooooooong1 = +12312312321321312, ); let loooooooooooooooooooooooooong2 = - objdddddddddectobjdddddddddect(-12312312321321312) - .ewqeqewqweqweqweqweqweqweqw; + objdddddddddectobjdddddddddect( + -12312312321321312, + ).ewqeqewqweqweqweqweqweqweqw; //JsStringLiteralExpression argument var loooooooooooooooooooooooooong1 = @@ -406,8 +408,9 @@ var loooooooooooooooooooooooooong1 = "111111111111111111", ); let loooooooooooooooooooooooooong2 = - objdddddddddectobjdddddddddect("111111111111111111") - .ewqeqewqweqweqweqweqweqweqw; + objdddddddddectobjdddddddddect( + "111111111111111111", + ).ewqeqewqweqweqweqweqweqweqw; let loooooooooooooooooooooooooong3 = objdddddddddectobjdddddddddect("111111111111111111")[dsadsadsadsadsadsadsa]() .ewqoewqoeiowqieopwqie; @@ -419,8 +422,9 @@ let loooooooooooooooooooooooooong3 = var loooooooooooooooooooooooooong1 = objdddddddddectobjdddddddddect(/\wwwwwwwwwwwwwwwwww+/gi); let loooooooooooooooooooooooooong2 = - objdddddddddectobjdddddddddect(/\wwwwwwwwwwwwwwwwww+/gi) - .ewqeqewqweqweqweqweqweqweqw; + objdddddddddectobjdddddddddect( + /\wwwwwwwwwwwwwwwwww+/gi, + ).ewqeqewqweqweqweqweqweqweqw; let loooooooooooooooooooooooooong3 = objdddddddddectobjdddddddddect( /\wwwwwwwwwwwwwwwwww+/gi, @@ -436,8 +440,9 @@ var loooooooooooooooooooooooooong1 = ``, ); let loooooooooooooooooooooooooong2 = - objdddddddddectobjdddsadsadddddddect(`111111111111111111`) - .ewqeqewqweqweqweqweqweqweqw; + objdddddddddectobjdddsadsadddddddect( + `111111111111111111`, + ).ewqeqewqweqweqweqweqweqweqw; let loooooooooooooooooooooooooong3 = objdddddddddectobjddsadsaddddddddect( `111111111111111111`, @@ -453,8 +458,9 @@ var loooooooooooooooooooooooooong1 = true, ); let loooooooooooooooooooooooooong2 = - objdddddddddectobjdddddddsadsadasdddect(undefined) - .ewqeqewqweqweqweqweqweqweqw; + objdddddddddectobjdddddddsadsadasdddect( + undefined, + ).ewqeqewqweqweqweqweqweqweqw; let loooooooooooooooooooooooooong3 = objdddddddddectobjdddddddddect(321321312321312321321)[dsadsadsadsadsadsadsa]() .ewqoewqoeiowqieopwqie; @@ -530,8 +536,9 @@ let looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo this(9007199254740991n)[dsadsadsadsadsadsadsa]().ewqoewqoeiowqieopwqie; //fluid layout -const otherBrandsWithThisAdjacencyCount123 = Object.values(edge.to.edges) - .length; +const otherBrandsWithThisAdjacencyCount123 = Object.values( + edge.to.edges, +).length; let vgChannel = pointPositionDefaultRef({ model, defaultPos, channel })(); const bifornCringerMoshedPerplexSawderGlyphsHb = someBigFunctionName( `foo @@ -742,56 +749,56 @@ const a 78: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong3 = 80: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong4 = 82: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong5 = - 188: var looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong1 = - 190: let looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong2 = - 192: let looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong3 = - 194: let looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong4 = - 198: var loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong1 = - 200: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong2 = - 202: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong3 = - 204: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong4 = - 208: var loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong1 = - 210: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong2 = + 194: var looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong1 = + 196: let looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong2 = + 198: let looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong3 = + 200: let looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong4 = + 204: var loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong1 = + 206: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong2 = + 208: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong3 = + 210: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong4 = 214: var loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong1 = 216: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong2 = - 218: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong3 = - 220: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong4 = - 224: var loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong1 = - 226: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong2 = - 228: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong3 = - 230: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong4 = - 234: var loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong1 = - 236: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong2 = - 238: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong3 = - 240: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong4 = - 244: var loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong1 = - 246: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong2 = - 248: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong3 = - 250: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong4 = - 361: var loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong1 = - 363: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong2 = - 365: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong3 = - 369: var loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong1 = - 371: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong2 = - 373: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong3 = - 375: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong4 = - 379: var loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong1 = - 381: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong2 = - 383: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong3 = - 385: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong4 = - 389: var loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong1 = - 391: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong2 = - 393: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong3 = - 396: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong4 = - 401: var loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong1 = - 403: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong2 = - 405: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong3 = - 410: var loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong1 = - 412: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong2 = - 414: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong3 = - 418: var loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong1 = - 423: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong2 = - 428: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong3 = - 444: var loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong1 = - 446: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong2 = + 220: var loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong1 = + 222: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong2 = + 224: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong3 = + 226: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong4 = + 230: var loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong1 = + 232: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong2 = + 234: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong3 = + 236: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong4 = + 240: var loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong1 = + 242: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong2 = + 244: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong3 = + 246: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong4 = + 250: var loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong1 = + 252: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong2 = + 254: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong3 = + 256: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong4 = + 368: var loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong1 = + 370: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong2 = + 372: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong3 = + 376: var loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong1 = + 378: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong2 = + 380: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong3 = + 382: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong4 = + 386: var loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong1 = + 388: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong2 = + 390: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong3 = + 392: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong4 = + 396: var loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong1 = + 398: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong2 = + 400: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong3 = + 403: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong4 = + 408: var loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong1 = + 410: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong2 = + 412: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong3 = + 417: var loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong1 = + 419: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong2 = + 421: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong3 = + 425: var loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong1 = + 430: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong2 = + 435: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong3 = + 451: var loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong1 = + 453: let loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong2 = diff --git a/crates/rome_js_formatter/tests/specs/js/module/expression/import_meta_expression/import_meta_expression.js.snap b/crates/rome_js_formatter/tests/specs/js/module/expression/import_meta_expression/import_meta_expression.js.snap index fe1ad9753b17..c323982b4053 100644 --- a/crates/rome_js_formatter/tests/specs/js/module/expression/import_meta_expression/import_meta_expression.js.snap +++ b/crates/rome_js_formatter/tests/specs/js/module/expression/import_meta_expression/import_meta_expression.js.snap @@ -17,10 +17,14 @@ Quote style: Double Quotes ----- console.log(import.meta); import.meta.field = - obj.aReallyLongVariableName.andAnotherReallyLongVariableName - .andAnotherReallyLongVariableName.andAnotherReallyLongVariable; + obj.aReallyLongVariableName.andAnotherReallyLongVariableName.andAnotherReallyLongVariableName.andAnotherReallyLongVariable; import.meta.aReallyLongVariableName.andAnotherReallyLongVariableName .andAnotherReallyLongVariableName.andAnotherReallyLongVariable; + + +## Lines exceeding width of 80 characters + + 3: obj.aReallyLongVariableName.andAnotherReallyLongVariableName.andAnotherReallyLongVariableName.andAnotherReallyLongVariable; ## Output 2 ----- Indent style: Spaces, size: 4 @@ -29,8 +33,12 @@ Quote style: Double Quotes ----- console.log(import.meta); import.meta.field = - obj.aReallyLongVariableName.andAnotherReallyLongVariableName.andAnotherReallyLongVariableName - .andAnotherReallyLongVariable; + obj.aReallyLongVariableName.andAnotherReallyLongVariableName.andAnotherReallyLongVariableName.andAnotherReallyLongVariable; import.meta.aReallyLongVariableName.andAnotherReallyLongVariableName.andAnotherReallyLongVariableName .andAnotherReallyLongVariable; + +## Lines exceeding width of 120 characters + + 3: obj.aReallyLongVariableName.andAnotherReallyLongVariableName.andAnotherReallyLongVariableName.andAnotherReallyLongVariable; + diff --git a/crates/rome_js_formatter/tests/specs/prettier/js/assignment/issue-1966.js.snap b/crates/rome_js_formatter/tests/specs/prettier/js/assignment/issue-1966.js.snap deleted file mode 100644 index 4e2ba179f7c6..000000000000 --- a/crates/rome_js_formatter/tests/specs/prettier/js/assignment/issue-1966.js.snap +++ /dev/null @@ -1,45 +0,0 @@ ---- -source: crates/rome_js_formatter/tests/prettier_tests.rs ---- - -# Input - -```js -const aVeryLongNameThatGoesOnAndOn = this.someOtherObject.someOtherNestedObject.someLongFunctionName(); - -this.someObject.someOtherNestedObject = this.someOtherObject.whyNotNestAnotherOne.someLongFunctionName(); - -this.isaverylongmethodexpression.withmultiplelevels = this.isanotherverylongexpression.thatisalsoassigned = 0; -``` - - -# Prettier differences - -```diff ---- Prettier -+++ Rome -@@ -4,5 +4,5 @@ - this.someObject.someOtherNestedObject = - this.someOtherObject.whyNotNestAnotherOne.someLongFunctionName(); - --this.isaverylongmethodexpression.withmultiplelevels = -- this.isanotherverylongexpression.thatisalsoassigned = 0; -+this.isaverylongmethodexpression.withmultiplelevels = this -+ .isanotherverylongexpression.thatisalsoassigned = 0; -``` - -# Output - -```js -const aVeryLongNameThatGoesOnAndOn = - this.someOtherObject.someOtherNestedObject.someLongFunctionName(); - -this.someObject.someOtherNestedObject = - this.someOtherObject.whyNotNestAnotherOne.someLongFunctionName(); - -this.isaverylongmethodexpression.withmultiplelevels = this - .isanotherverylongexpression.thatisalsoassigned = 0; -``` - - - diff --git a/crates/rome_js_formatter/tests/specs/prettier/js/assignment/issue-4094.js.snap b/crates/rome_js_formatter/tests/specs/prettier/js/assignment/issue-4094.js.snap deleted file mode 100644 index 329a00ab71bf..000000000000 --- a/crates/rome_js_formatter/tests/specs/prettier/js/assignment/issue-4094.js.snap +++ /dev/null @@ -1,39 +0,0 @@ ---- -source: crates/rome_js_formatter/tests/prettier_tests.rs ---- - -# Input - -```js -if (something) { - const otherBrandsWithThisAdjacencyCount123 = Object.values(edge.to.edges).length -} -``` - - -# Prettier differences - -```diff ---- Prettier -+++ Rome -@@ -1,5 +1,4 @@ - if (something) { -- const otherBrandsWithThisAdjacencyCount123 = Object.values( -- edge.to.edges, -- ).length; -+ const otherBrandsWithThisAdjacencyCount123 = Object.values(edge.to.edges) -+ .length; - } -``` - -# Output - -```js -if (something) { - const otherBrandsWithThisAdjacencyCount123 = Object.values(edge.to.edges) - .length; -} -``` - - - diff --git a/crates/rome_js_formatter/tests/specs/prettier/js/classes/assignment.js.snap b/crates/rome_js_formatter/tests/specs/prettier/js/classes/assignment.js.snap index caf89fbb4705..bad7dfdb08c2 100644 --- a/crates/rome_js_formatter/tests/specs/prettier/js/classes/assignment.js.snap +++ b/crates/rome_js_formatter/tests/specs/prettier/js/classes/assignment.js.snap @@ -44,22 +44,14 @@ module.exports = class A extends B { ```diff --- Prettier +++ Rome -@@ -1,4 +1,5 @@ --aaaaaaaa.bbbbbbbb.cccccccc.dddddddd.eeeeeeee.ffffffff.gggggggg2 = class extends ( -+aaaaaaaa.bbbbbbbb.cccccccc.dddddddd.eeeeeeee -+ .ffffffff.gggggggg2 = class extends ( - aaaaaaaa.bbbbbbbb.cccccccc.dddddddd.eeeeeeee.ffffffff.gggggggg1 - ) { - method() { -@@ -12,17 +13,15 @@ +@@ -12,17 +12,14 @@ } }; -aaaaaaaa.bbbbbbbb.cccccccc.dddddddd.eeeeeeee.ffffffff.gggggggg2 = class extends ( - bar -) { -+aaaaaaaa.bbbbbbbb.cccccccc.dddddddd.eeeeeeee -+ .ffffffff.gggggggg2 = class extends bar { ++aaaaaaaa.bbbbbbbb.cccccccc.dddddddd.eeeeeeee.ffffffff.gggggggg2 = class extends bar { method() { console.log("foo"); } @@ -78,8 +70,7 @@ module.exports = class A extends B { # Output ```js -aaaaaaaa.bbbbbbbb.cccccccc.dddddddd.eeeeeeee - .ffffffff.gggggggg2 = class extends ( +aaaaaaaa.bbbbbbbb.cccccccc.dddddddd.eeeeeeee.ffffffff.gggggggg2 = class extends ( aaaaaaaa.bbbbbbbb.cccccccc.dddddddd.eeeeeeee.ffffffff.gggggggg1 ) { method() { @@ -93,8 +84,7 @@ foo = class extends bar { } }; -aaaaaaaa.bbbbbbbb.cccccccc.dddddddd.eeeeeeee - .ffffffff.gggggggg2 = class extends bar { +aaaaaaaa.bbbbbbbb.cccccccc.dddddddd.eeeeeeee.ffffffff.gggggggg2 = class extends bar { method() { console.log("foo"); } @@ -115,4 +105,9 @@ module.exports = class A extends B { ``` +# Lines exceeding max width of 80 characters +``` + 1: aaaaaaaa.bbbbbbbb.cccccccc.dddddddd.eeeeeeee.ffffffff.gggggggg2 = class extends ( + 15: aaaaaaaa.bbbbbbbb.cccccccc.dddddddd.eeeeeeee.ffffffff.gggggggg2 = class extends bar { +``` diff --git a/crates/rome_js_formatter/tests/specs/prettier/js/method-chain/bracket_0.js.snap b/crates/rome_js_formatter/tests/specs/prettier/js/method-chain/bracket_0.js.snap deleted file mode 100644 index 78de46db143f..000000000000 --- a/crates/rome_js_formatter/tests/specs/prettier/js/method-chain/bracket_0.js.snap +++ /dev/null @@ -1,56 +0,0 @@ ---- -source: crates/rome_js_formatter/tests/prettier_tests.rs ---- - -# Input - -```js -function a() { - function b() { - queryThenMutateDOM( - () => { - title = SomeThing.call(root, 'someLongStringThatPushesThisTextReallyFar')[0]; - } - ); - } -} -``` - - -# Prettier differences - -```diff ---- Prettier -+++ Rome -@@ -1,10 +1,9 @@ - function a() { - function b() { - queryThenMutateDOM(() => { -- title = SomeThing.call( -- root, -- "someLongStringThatPushesThisTextReallyFar", -- )[0]; -+ title = SomeThing.call(root, "someLongStringThatPushesThisTextReallyFar")[ -+ 0 -+ ]; - }); - } - } -``` - -# Output - -```js -function a() { - function b() { - queryThenMutateDOM(() => { - title = SomeThing.call(root, "someLongStringThatPushesThisTextReallyFar")[ - 0 - ]; - }); - } -} -``` - - - diff --git a/crates/rome_js_formatter/tests/specs/prettier/js/method-chain/break-last-member.js.snap b/crates/rome_js_formatter/tests/specs/prettier/js/method-chain/break-last-member.js.snap index 3bf68b4b0bdb..390ed256325d 100644 --- a/crates/rome_js_formatter/tests/specs/prettier/js/method-chain/break-last-member.js.snap +++ b/crates/rome_js_formatter/tests/specs/prettier/js/method-chain/break-last-member.js.snap @@ -33,18 +33,7 @@ const { ```diff --- Prettier +++ Rome -@@ -3,22 +3,17 @@ - weNeedToReachTheEightyCharacterLimitXXXXXXXXXXXXXXXXX.someNode - .childrenInAnArray[0]; - superSupersuperSupersuperSupersuperSupersuperSuperLong.exampleOfOrderOfGetterAndSetterReordered; --superSupersuperSupersuperSupersuperSupersuperSuperLong -- .exampleOfOrderOfGetterAndSetterReordered[0]; -+superSupersuperSupersuperSupersuperSupersuperSuperLong.exampleOfOrderOfGetterAndSetterReordered[ -+ 0 -+]; - - expect( - findDOMNode(component.instance()).getElementsByClassName(styles.inner)[0] +@@ -11,14 +11,8 @@ .style.paddingRight, ).toBe("1000px"); @@ -71,9 +60,8 @@ SomeVeryLongUpperCaseConstant.someVeryLongCallExpression() weNeedToReachTheEightyCharacterLimitXXXXXXXXXXXXXXXXX.someNode .childrenInAnArray[0]; superSupersuperSupersuperSupersuperSupersuperSuperLong.exampleOfOrderOfGetterAndSetterReordered; -superSupersuperSupersuperSupersuperSupersuperSuperLong.exampleOfOrderOfGetterAndSetterReordered[ - 0 -]; +superSupersuperSupersuperSupersuperSupersuperSuperLong + .exampleOfOrderOfGetterAndSetterReordered[0]; expect( findDOMNode(component.instance()).getElementsByClassName(styles.inner)[0] @@ -104,6 +92,5 @@ const { # Lines exceeding max width of 80 characters ``` 5: superSupersuperSupersuperSupersuperSupersuperSuperLong.exampleOfOrderOfGetterAndSetterReordered; - 6: superSupersuperSupersuperSupersuperSupersuperSuperLong.exampleOfOrderOfGetterAndSetterReordered[ ``` diff --git a/crates/rome_js_formatter/tests/specs/prettier/typescript/assignment/lone-arg.ts.snap b/crates/rome_js_formatter/tests/specs/prettier/typescript/assignment/lone-arg.ts.snap deleted file mode 100644 index 40a2e1277a61..000000000000 --- a/crates/rome_js_formatter/tests/specs/prettier/typescript/assignment/lone-arg.ts.snap +++ /dev/null @@ -1,46 +0,0 @@ ---- -source: crates/rome_js_formatter/tests/prettier_tests.rs ---- - -# Input - -```js -if (true) { - if (condition) { - const secondType = sourceCode.getNodeByRangeIndex1234(second.range[0])! - .type; - } -} -``` - - -# Prettier differences - -```diff ---- Prettier -+++ Rome -@@ -1,7 +1,6 @@ - if (true) { - if (condition) { -- const secondType = sourceCode.getNodeByRangeIndex1234( -- second.range[0], -- )!.type; -+ const secondType = sourceCode.getNodeByRangeIndex1234(second.range[0])! -+ .type; - } - } -``` - -# Output - -```js -if (true) { - if (condition) { - const secondType = sourceCode.getNodeByRangeIndex1234(second.range[0])! - .type; - } -} -``` - - - diff --git a/crates/rome_js_formatter/tests/specs/ts/assignment/type_assertion_assignment.ts.snap b/crates/rome_js_formatter/tests/specs/ts/assignment/type_assertion_assignment.ts.snap index d8735d797a9c..e8a22c397702 100644 --- a/crates/rome_js_formatter/tests/specs/ts/assignment/type_assertion_assignment.ts.snap +++ b/crates/rome_js_formatter/tests/specs/ts/assignment/type_assertion_assignment.ts.snap @@ -30,8 +30,8 @@ let x; (x) = true; -(x.very.long.chain.of.static.members.that.goes.on.for.ever.I.mean.it - .for.ever as string) = veryLongExpression(); +(x.very.long.chain.of.static.members.that.goes.on.for.ever.I.mean.it.for + .ever as string) = veryLongExpression(); for (x of []) { }