Skip to content

Commit

Permalink
Improve assignment shape calculation
Browse files Browse the repository at this point in the history
  • Loading branch information
JohnnyMorganz committed Sep 23, 2022
1 parent c8f7426 commit 01c72a6
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions src/formatters/assignment.rs
Original file line number Diff line number Diff line change
Expand Up @@ -319,6 +319,8 @@ pub fn format_assignment_no_trivia(
assignment: &Assignment,
shape: Shape,
) -> Assignment {
const EQUALS_LEN: usize = " = ".len();

// Check if the assignment expressions or equal token contain comments. If they do, we bail out of determining any tactics
// and format multiline
let contains_comments = trivia_util::token_contains_comments(assignment.equal_token())
Expand All @@ -342,13 +344,13 @@ pub fn format_assignment_no_trivia(

// Test the assignment to see if its over width
let singleline_shape = shape
+ (strip_leading_trivia(&var_list).to_string().len()
+ 3
+ strip_trailing_trivia(&expr_list).to_string().len());
.take_last_line(&strip_leading_trivia(&var_list))
.take_first_line(&strip_trailing_trivia(&expr_list))
+ EQUALS_LEN;
if contains_comments || singleline_shape.over_budget() {
// We won't attempt anything else with the var_list. Format it normally
var_list = try_format_punctuated(ctx, assignment.variables(), shape, format_var, Some(1));
let shape = shape + (strip_leading_trivia(&var_list).to_string().len() + 3);
let shape = shape.take_last_line(&strip_leading_trivia(&var_list)) + EQUALS_LEN;

let (new_expr_list, new_equal_token) =
attempt_assignment_tactics(ctx, assignment.expressions(), shape, equal_token);
Expand Down

0 comments on commit 01c72a6

Please sign in to comment.