Skip to content
This repository has been archived by the owner on Aug 31, 2023. It is now read-only.

Commit

Permalink
chore: 馃 recover
Browse files Browse the repository at this point in the history
  • Loading branch information
IWANABETHATGUY committed Oct 3, 2022
1 parent 1d5cf27 commit c932a1b
Show file tree
Hide file tree
Showing 8 changed files with 78 additions and 134 deletions.
54 changes: 13 additions & 41 deletions crates/rome_js_formatter/src/utils/assignment_like.rs
@@ -1,5 +1,4 @@
use crate::js::auxiliary::initializer_clause::FormatJsInitializerClauseOptions;
use crate::js::expressions::arrow_function_expression::FormatJsArrowFunctionExpressionOptions;
use crate::prelude::*;
use crate::utils::member_chain::is_member_call_chain;
use crate::utils::object::write_member_name;
Expand Down Expand Up @@ -325,9 +324,8 @@ impl JsAnyAssignmentLike {
// SAFETY: Calling `unwrap` here is safe because we check `has_only_left_hand_side` variant at the beginning of the `layout` function
n.value().unwrap().into()
}
JsAnyAssignmentLike::TsPropertySignatureClassMember(property_signature) => {
// SAFETY: Calling `unwrap` here is safe because we check `has_only_left_hand_side` variant at the beginning of the `layout` function
Ok(property_signature.value().unwrap().into())
JsAnyAssignmentLike::TsPropertySignatureClassMember(_) => {
unreachable!("TsPropertySignatureClassMember doesn't have any right side. If you're here, `has_only_left_hand_side` hasn't been called")
}
};

Expand Down Expand Up @@ -440,7 +438,7 @@ impl JsAnyAssignmentLike {
let width = write_member_name(&name.into(), f)?;
let text_width_for_break =
(u8::from(f.options().tab_width()) + MIN_OVERLAP_FOR_BREAK) as usize;
width < text_width_for_break && property_annotation.is_none()
width < text_width_for_break
};

write!(f, [property_annotation.format()])?;
Expand All @@ -455,7 +453,6 @@ impl JsAnyAssignmentLike {
name,
property_annotation,
semicolon_token: _,
value: _,
} = property_signature_class_member.as_fields();

write!(f, [modifiers.format(), space(),])?;
Expand Down Expand Up @@ -503,13 +500,7 @@ impl JsAnyAssignmentLike {
Ok(())
}
// this variant doesn't have any operator
JsAnyAssignmentLike::TsPropertySignatureClassMember(property_signature) => {
if let Some(initializer) = property_signature.value() {
let eq_token = initializer.eq_token()?;
write!(f, [space(), eq_token.format()])?
}
Ok(())
}
JsAnyAssignmentLike::TsPropertySignatureClassMember(_) => Ok(()),
}
}

Expand Down Expand Up @@ -566,30 +557,22 @@ impl JsAnyAssignmentLike {
Ok(())
}
// this variant doesn't have any right part
JsAnyAssignmentLike::TsPropertySignatureClassMember(property_signature) => {
if let Some(initializer) = property_signature.value() {
let expression = initializer.expression()?;
write!(f, [space(), expression.format()])?;
}
Ok(())
}
JsAnyAssignmentLike::TsPropertySignatureClassMember(_) => Ok(()),
}
}

fn write_suppressed_initializer(&self, f: &mut JsFormatter) -> FormatResult<()> {
let initializer = match self {
JsAnyAssignmentLike::JsPropertyClassMember(class_member) => class_member.value(),
JsAnyAssignmentLike::TsPropertySignatureClassMember(property_signature) => {
property_signature.value()
}
JsAnyAssignmentLike::JsVariableDeclarator(variable_declarator) => {
variable_declarator.initializer()
}

JsAnyAssignmentLike::JsPropertyObjectMember(_)
| JsAnyAssignmentLike::JsAssignmentExpression(_)
| JsAnyAssignmentLike::JsObjectAssignmentPatternProperty(_)
| JsAnyAssignmentLike::TsTypeAliasDeclaration(_) => {
| JsAnyAssignmentLike::TsTypeAliasDeclaration(_)
| JsAnyAssignmentLike::TsPropertySignatureClassMember(_) => {
unreachable!("These variants have no initializer")
}
};
Expand Down Expand Up @@ -699,9 +682,6 @@ impl JsAnyAssignmentLike {
declarator.initializer().is_none()
} else if let JsAnyAssignmentLike::JsPropertyClassMember(class_member) = self {
class_member.value().is_none()
} else if let JsAnyAssignmentLike::TsPropertySignatureClassMember(property_signature) = self
{
property_signature.value().is_none()
} else {
matches!(self, JsAnyAssignmentLike::TsPropertySignatureClassMember(_))
}
Expand Down Expand Up @@ -937,7 +917,7 @@ impl Format<JsFormatContext> for JsAnyAssignmentLike {
self.write_operator(f)?;
}

match layout {
match &layout {
AssignmentLikeLayout::OnlyLeft => Ok(()),
AssignmentLikeLayout::Fluid => {
let group_id = f.group_id("assignment_like");
Expand Down Expand Up @@ -1012,7 +992,7 @@ impl Format<JsFormatContext> for JsAnyAssignmentLike {
/// [Prettier applies]: https://github.com/prettier/prettier/blob/a043ac0d733c4d53f980aa73807a63fc914f23bd/src/language-js/print/assignment.js#L329
fn is_poorly_breakable_member_or_call_chain(
expression: &JsAnyExpression,
f: &Formatter<JsFormatContext>,
f: &mut Formatter<JsFormatContext>,
) -> SyntaxResult<bool> {
let threshold = f.options().line_width().value() / 4;

Expand Down Expand Up @@ -1061,11 +1041,7 @@ fn is_poorly_breakable_member_or_call_chain(
}

for call_expression in call_expressions {
if is_member_call_chain(
call_expression.clone(),
f.comments(),
f.options().tab_width(),
)? {
if is_member_call_chain(&call_expression, f)? {
return Ok(false);
}

Expand Down Expand Up @@ -1209,13 +1185,9 @@ pub(crate) fn with_assignment_layout(
impl Format<JsFormatContext> for WithAssignmentLayout<'_> {
fn fmt(&self, f: &mut Formatter<JsFormatContext>) -> FormatResult<()> {
match self.expression {
JsAnyExpression::JsArrowFunctionExpression(arrow) => arrow
.format()
.with_options(FormatJsArrowFunctionExpressionOptions {
assignment_layout: self.layout,
..FormatJsArrowFunctionExpressionOptions::default()
})
.fmt(f),
JsAnyExpression::JsArrowFunctionExpression(arrow) => {
arrow.format().with_options(self.layout).fmt(f)
}
expression => expression.format().fmt(f),
}
}
Expand Down
Expand Up @@ -99,7 +99,6 @@ JsModule {
value: IDENT@118..123 "prop" [] [Whitespace(" ")],
},
property_annotation: missing (optional),
value: missing (optional),
semicolon_token: missing (optional),
},
],
Expand Down Expand Up @@ -183,7 +182,6 @@ JsModule {
0: IDENT@118..123 "prop" [] [Whitespace(" ")]
2: (empty)
3: (empty)
4: (empty)
8: R_CURLY@123..124 "}" [] []
3: EOF@124..125 "" [Newline("\n")] []
--
Expand Down
Expand Up @@ -13,28 +13,30 @@ JsModule {
implements_clause: missing (optional),
l_curly_token: L_CURLY@17..18 "{" [] [],
members: JsClassMemberList [
TsPropertySignatureClassMember {
modifiers: TsPropertySignatureModifierList [
TsAbstractModifier {
modifier_token: ABSTRACT_KW@18..32 "abstract" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")],
JsUnknownMember {
items: [
TsPropertySignatureModifierList [
TsAbstractModifier {
modifier_token: ABSTRACT_KW@18..32 "abstract" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")],
},
],
JsLiteralMemberName {
value: IDENT@32..36 "name" [] [],
},
],
name: JsLiteralMemberName {
value: IDENT@32..36 "name" [] [],
},
property_annotation: TsTypeAnnotation {
colon_token: COLON@36..38 ":" [] [Whitespace(" ")],
ty: TsStringType {
string_token: STRING_KW@38..45 "string" [] [Whitespace(" ")],
TsTypeAnnotation {
colon_token: COLON@36..38 ":" [] [Whitespace(" ")],
ty: TsStringType {
string_token: STRING_KW@38..45 "string" [] [Whitespace(" ")],
},
},
},
value: JsInitializerClause {
eq_token: EQ@45..47 "=" [] [Whitespace(" ")],
expression: JsStringLiteralExpression {
value_token: JS_STRING_LITERAL@47..49 "\"\"" [] [],
JsInitializerClause {
eq_token: EQ@45..47 "=" [] [Whitespace(" ")],
expression: JsStringLiteralExpression {
value_token: JS_STRING_LITERAL@47..49 "\"\"" [] [],
},
},
},
semicolon_token: SEMICOLON@49..50 ";" [] [],
SEMICOLON@49..50 ";" [] [],
],
},
],
r_curly_token: R_CURLY@50..52 "}" [Newline("\n")] [],
Expand All @@ -57,7 +59,7 @@ JsModule {
5: (empty)
6: L_CURLY@17..18 "{" [] []
7: JS_CLASS_MEMBER_LIST@18..50
0: TS_PROPERTY_SIGNATURE_CLASS_MEMBER@18..50
0: JS_UNKNOWN_MEMBER@18..50
0: TS_PROPERTY_SIGNATURE_MODIFIER_LIST@18..32
0: TS_ABSTRACT_MODIFIER@18..32
0: ABSTRACT_KW@18..32 "abstract" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")]
Expand Down
Expand Up @@ -15,19 +15,19 @@ JsModule {
implements_clause: missing (optional),
l_curly_token: L_CURLY@16..18 "{" [] [Whitespace(" ")],
members: JsClassMemberList [
TsPropertySignatureClassMember {
modifiers: TsPropertySignatureModifierList [],
name: JsLiteralMemberName {
value: IDENT@18..23 "prop" [] [Whitespace(" ")],
},
property_annotation: missing (optional),
value: JsInitializerClause {
eq_token: EQ@23..25 "=" [] [Whitespace(" ")],
expression: JsStringLiteralExpression {
value_token: JS_STRING_LITERAL@25..32 "\"test\"" [] [Whitespace(" ")],
JsUnknownMember {
items: [
TsPropertySignatureModifierList [],
JsLiteralMemberName {
value: IDENT@18..23 "prop" [] [Whitespace(" ")],
},
},
semicolon_token: missing (optional),
JsInitializerClause {
eq_token: EQ@23..25 "=" [] [Whitespace(" ")],
expression: JsStringLiteralExpression {
value_token: JS_STRING_LITERAL@25..32 "\"test\"" [] [Whitespace(" ")],
},
},
],
},
],
r_curly_token: R_CURLY@32..33 "}" [] [],
Expand All @@ -44,23 +44,23 @@ JsModule {
implements_clause: missing (optional),
l_curly_token: L_CURLY@42..44 "{" [] [Whitespace(" ")],
members: JsClassMemberList [
TsPropertySignatureClassMember {
modifiers: TsPropertySignatureModifierList [
TsDeclareModifier {
modifier_token: DECLARE_KW@44..52 "declare" [] [Whitespace(" ")],
JsUnknownMember {
items: [
TsPropertySignatureModifierList [
TsDeclareModifier {
modifier_token: DECLARE_KW@44..52 "declare" [] [Whitespace(" ")],
},
],
JsLiteralMemberName {
value: IDENT@52..57 "prop" [] [Whitespace(" ")],
},
],
name: JsLiteralMemberName {
value: IDENT@52..57 "prop" [] [Whitespace(" ")],
},
property_annotation: missing (optional),
value: JsInitializerClause {
eq_token: EQ@57..59 "=" [] [Whitespace(" ")],
expression: JsStringLiteralExpression {
value_token: JS_STRING_LITERAL@59..66 "\"test\"" [] [Whitespace(" ")],
JsInitializerClause {
eq_token: EQ@57..59 "=" [] [Whitespace(" ")],
expression: JsStringLiteralExpression {
value_token: JS_STRING_LITERAL@59..66 "\"test\"" [] [Whitespace(" ")],
},
},
},
semicolon_token: missing (optional),
],
},
],
r_curly_token: R_CURLY@66..67 "}" [] [],
Expand All @@ -85,16 +85,14 @@ JsModule {
5: (empty)
6: L_CURLY@16..18 "{" [] [Whitespace(" ")]
7: JS_CLASS_MEMBER_LIST@18..32
0: TS_PROPERTY_SIGNATURE_CLASS_MEMBER@18..32
0: JS_UNKNOWN_MEMBER@18..32
0: TS_PROPERTY_SIGNATURE_MODIFIER_LIST@18..18
1: JS_LITERAL_MEMBER_NAME@18..23
0: IDENT@18..23 "prop" [] [Whitespace(" ")]
2: (empty)
3: JS_INITIALIZER_CLAUSE@23..32
2: JS_INITIALIZER_CLAUSE@23..32
0: EQ@23..25 "=" [] [Whitespace(" ")]
1: JS_STRING_LITERAL_EXPRESSION@25..32
0: JS_STRING_LITERAL@25..32 "\"test\"" [] [Whitespace(" ")]
4: (empty)
8: R_CURLY@32..33 "}" [] []
1: JS_CLASS_DECLARATION@33..67
0: (empty)
Expand All @@ -106,18 +104,16 @@ JsModule {
5: (empty)
6: L_CURLY@42..44 "{" [] [Whitespace(" ")]
7: JS_CLASS_MEMBER_LIST@44..66
0: TS_PROPERTY_SIGNATURE_CLASS_MEMBER@44..66
0: JS_UNKNOWN_MEMBER@44..66
0: TS_PROPERTY_SIGNATURE_MODIFIER_LIST@44..52
0: TS_DECLARE_MODIFIER@44..52
0: DECLARE_KW@44..52 "declare" [] [Whitespace(" ")]
1: JS_LITERAL_MEMBER_NAME@52..57
0: IDENT@52..57 "prop" [] [Whitespace(" ")]
2: (empty)
3: JS_INITIALIZER_CLAUSE@57..66
2: JS_INITIALIZER_CLAUSE@57..66
0: EQ@57..59 "=" [] [Whitespace(" ")]
1: JS_STRING_LITERAL_EXPRESSION@59..66
0: JS_STRING_LITERAL@59..66 "\"test\"" [] [Whitespace(" ")]
4: (empty)
8: R_CURLY@66..67 "}" [] []
3: EOF@67..68 "" [Newline("\n")] []
--
Expand Down
Expand Up @@ -287,7 +287,6 @@ JsModule {
string_token: STRING_KW@349..355 "string" [] [],
},
},
value: missing (optional),
semicolon_token: SEMICOLON@355..356 ";" [] [],
},
TsMethodSignatureClassMember {
Expand Down Expand Up @@ -564,8 +563,7 @@ JsModule {
0: COLON@347..349 ":" [] [Whitespace(" ")]
1: TS_STRING_TYPE@349..355
0: STRING_KW@349..355 "string" [] []
3: (empty)
4: SEMICOLON@355..356 ";" [] []
3: SEMICOLON@355..356 ";" [] []
1: TS_METHOD_SIGNATURE_CLASS_MEMBER@356..380
0: TS_METHOD_SIGNATURE_MODIFIER_LIST@356..370
0: TS_ABSTRACT_MODIFIER@356..370
Expand Down
Expand Up @@ -31,7 +31,6 @@ JsModule {
},
},
},
value: missing (optional),
semicolon_token: SEMICOLON@46..47 ";" [] [],
},
],
Expand Down Expand Up @@ -67,7 +66,6 @@ JsModule {
0: COLON@38..40 ":" [] [Whitespace(" ")]
1: TS_STRING_TYPE@40..46
0: STRING_KW@40..46 "string" [] []
3: (empty)
4: SEMICOLON@46..47 ";" [] []
3: SEMICOLON@46..47 ";" [] []
8: R_CURLY@47..49 "}" [Newline("\n")] []
3: EOF@49..50 "" [Newline("\n")] []

0 comments on commit c932a1b

Please sign in to comment.