diff --git a/crates/oxc_formatter/src/utils/assignment_like.rs b/crates/oxc_formatter/src/utils/assignment_like.rs index c4067105cb98d..1f4016bd27a8f 100644 --- a/crates/oxc_formatter/src/utils/assignment_like.rs +++ b/crates/oxc_formatter/src/utils/assignment_like.rs @@ -387,11 +387,15 @@ impl<'a> AssignmentLike<'a, '_> { } } + if self.should_break_left_hand_side(left_may_break) { + return AssignmentLikeLayout::BreakLeftHandSide; + } + if self.should_break_after_operator(right_expression, f) { return AssignmentLikeLayout::BreakAfterOperator; } - if self.should_break_left_hand_side(left_may_break) { + if self.is_complex_type_alias() { return AssignmentLikeLayout::BreakLeftHandSide; } @@ -522,10 +526,6 @@ impl<'a> AssignmentLike<'a, '_> { return true; } - if self.is_complex_type_alias() { - return true; - } - let Self::VariableDeclarator(declarator) = self else { return false; }; diff --git a/crates/oxc_formatter/tests/fixtures/ts/assignments/type-alias.ts b/crates/oxc_formatter/tests/fixtures/ts/assignments/type-alias.ts new file mode 100644 index 0000000000000..2f04e0059eef0 --- /dev/null +++ b/crates/oxc_formatter/tests/fixtures/ts/assignments/type-alias.ts @@ -0,0 +1,4 @@ +export type _Repeat = + __Repeat extends infer X + ? Cast + : never \ No newline at end of file diff --git a/crates/oxc_formatter/tests/fixtures/ts/assignments/type-alias.ts.snap b/crates/oxc_formatter/tests/fixtures/ts/assignments/type-alias.ts.snap new file mode 100644 index 0000000000000..44bc331f15c41 --- /dev/null +++ b/crates/oxc_formatter/tests/fixtures/ts/assignments/type-alias.ts.snap @@ -0,0 +1,13 @@ +--- +source: crates/oxc_formatter/tests/fixtures/mod.rs +--- +==================== Input ==================== +export type _Repeat = + __Repeat extends infer X + ? Cast + : never +==================== Output ==================== +export type _Repeat = + __Repeat extends infer X ? Cast : never; + +===================== End =====================