diff --git a/src/expr.rs b/src/expr.rs index fbbc592e547..08b9ad3079c 100644 --- a/src/expr.rs +++ b/src/expr.rs @@ -1565,7 +1565,7 @@ fn rewrite_struct_lit<'a>( rewrite_with_alignment( fields, context, - shape, + v_shape, mk_sp(body_lo, span.hi()), one_line_width, )? diff --git a/src/items.rs b/src/items.rs index 66fdaf50e5a..7c6219a4e04 100644 --- a/src/items.rs +++ b/src/items.rs @@ -1265,7 +1265,7 @@ pub fn format_struct_struct( let items_str = rewrite_with_alignment( fields, context, - Shape::indented(offset, context.config).sub_width(1)?, + Shape::indented(offset.block_indent(context.config), context.config).sub_width(1)?, mk_sp(body_lo, span.hi()), one_line_budget, )?; diff --git a/src/vertical.rs b/src/vertical.rs index dbb3e732d62..0364db763f9 100644 --- a/src/vertical.rs +++ b/src/vertical.rs @@ -172,16 +172,13 @@ pub fn rewrite_with_alignment( } else { let rest_span = mk_sp(init_last_pos, span.hi()); let rest_str = rewrite_with_alignment(rest, context, shape, rest_span, one_line_width)?; - Some( - result - + spaces - + "\n" - + &shape - .indent - .block_indent(context.config) - .to_string(context.config) - + &rest_str, - ) + Some(format!( + "{}{}\n{}{}", + result, + spaces, + &shape.indent.to_string(context.config), + &rest_str + )) } } @@ -217,9 +214,8 @@ fn rewrite_aligned_items_inner( offset: Indent, one_line_width: usize, ) -> Option { - let item_indent = offset.block_indent(context.config); // 1 = "," - let item_shape = Shape::indented(item_indent, context.config).sub_width(1)?; + let item_shape = Shape::indented(offset, context.config).sub_width(1)?; let (mut field_prefix_max_width, field_prefix_min_width) = struct_field_prefix_max_min_width(context, fields, item_shape); let max_diff = field_prefix_max_width.saturating_sub(field_prefix_min_width); diff --git a/tests/source/alignment_2633/block_style.rs b/tests/source/alignment_2633/block_style.rs new file mode 100644 index 00000000000..77fb2919edb --- /dev/null +++ b/tests/source/alignment_2633/block_style.rs @@ -0,0 +1,8 @@ +// rustfmt-struct_field_align_threshold: 50 + +fn func() { + Ok(ServerInformation { name: unwrap_message_string(items.get(0)), + vendor: unwrap_message_string(items.get(1)), + version: unwrap_message_string(items.get(2)), + spec_version: unwrap_message_string(items.get(3)), }); +} diff --git a/tests/source/alignment_2633/visual_style.rs b/tests/source/alignment_2633/visual_style.rs new file mode 100644 index 00000000000..f34cc621e64 --- /dev/null +++ b/tests/source/alignment_2633/visual_style.rs @@ -0,0 +1,9 @@ +// rustfmt-struct_field_align_threshold: 50 +// rustfmt-indent_style: Visual + +fn func() { + Ok(ServerInformation { name: unwrap_message_string(items.get(0)), + vendor: unwrap_message_string(items.get(1)), + version: unwrap_message_string(items.get(2)), + spec_version: unwrap_message_string(items.get(3)), }); +} diff --git a/tests/target/alignment_2633/block_style.rs b/tests/target/alignment_2633/block_style.rs new file mode 100644 index 00000000000..f13e8a8760e --- /dev/null +++ b/tests/target/alignment_2633/block_style.rs @@ -0,0 +1,10 @@ +// rustfmt-struct_field_align_threshold: 50 + +fn func() { + Ok(ServerInformation { + name: unwrap_message_string(items.get(0)), + vendor: unwrap_message_string(items.get(1)), + version: unwrap_message_string(items.get(2)), + spec_version: unwrap_message_string(items.get(3)), + }); +} diff --git a/tests/target/issue-2633.rs b/tests/target/alignment_2633/horizontal_tactic.rs similarity index 100% rename from tests/target/issue-2633.rs rename to tests/target/alignment_2633/horizontal_tactic.rs diff --git a/tests/target/alignment_2633/visual_style.rs b/tests/target/alignment_2633/visual_style.rs new file mode 100644 index 00000000000..7d21b599af4 --- /dev/null +++ b/tests/target/alignment_2633/visual_style.rs @@ -0,0 +1,9 @@ +// rustfmt-struct_field_align_threshold: 50 +// rustfmt-indent_style: Visual + +fn func() { + Ok(ServerInformation { name: unwrap_message_string(items.get(0)), + vendor: unwrap_message_string(items.get(1)), + version: unwrap_message_string(items.get(2)), + spec_version: unwrap_message_string(items.get(3)), }); +}