diff --git a/src/expr.rs b/src/expr.rs index e800ed0565f..1287b89ed63 100644 --- a/src/expr.rs +++ b/src/expr.rs @@ -466,6 +466,7 @@ where |item| item.rewrite(context, nested_shape), span.lo, span.hi, + false, ).collect::>(); if items.is_empty() { @@ -587,6 +588,7 @@ fn rewrite_closure_fn_decl( |arg| arg.rewrite(context, arg_shape), context.codemap.span_after(span, "|"), body.span.lo, + false, ); let item_vec = arg_items.collect::>(); // 1 = space between arguments and return type. @@ -2190,6 +2192,7 @@ where |item| item.rewrite(context, shape), span.lo, span.hi, + true, ); let mut item_vec: Vec<_> = items.collect(); @@ -2651,6 +2654,7 @@ fn rewrite_struct_lit<'a>( rewrite, body_lo, span.hi, + false, ); let item_vec = items.collect::>(); @@ -2803,6 +2807,7 @@ where |item| item.rewrite(context, nested_shape), list_lo, span.hi - BytePos(1), + false, ); let item_vec: Vec<_> = items.collect(); let tactic = definitive_tactic( diff --git a/src/imports.rs b/src/imports.rs index a65d8bb066a..80780b661f2 100644 --- a/src/imports.rs +++ b/src/imports.rs @@ -442,6 +442,7 @@ fn rewrite_use_list( rewrite_path_item, context.codemap.span_after(span, "{"), span.hi, + false, ); items.extend(iter); items diff --git a/src/items.rs b/src/items.rs index dc40d1b5b8a..09b5f7d9d30 100644 --- a/src/items.rs +++ b/src/items.rs @@ -469,6 +469,7 @@ impl<'a> FmtVisitor<'a> { |f| self.format_variant(f), body_lo, body_hi, + false, ); let shape = Shape::indented(self.block_indent, self.config) @@ -2207,6 +2208,7 @@ fn rewrite_args( }, comment_span_start, span.hi, + false, ); arg_items.extend(more_items); @@ -2411,6 +2413,7 @@ fn rewrite_generics_inner( |&(_, ref str)| str.clone(), context.codemap.span_after(span, "<"), span.hi, + false, ); format_generics_item_list(context, items, shape, one_line_width) } @@ -2554,6 +2557,7 @@ fn rewrite_where_clause_rfc_style( |pred| pred.rewrite(context, block_shape), span_start, span_end, + false, ); let comma_tactic = if where_clause_option.suppress_comma { SeparatorTactic::Never @@ -2654,6 +2658,7 @@ fn rewrite_where_clause( |pred| pred.rewrite(context, Shape::legacy(budget, offset)), span_start, span_end, + false, ); let item_vec = items.collect::>(); // FIXME: we don't need to collect here if the where_layout isn't diff --git a/src/lists.rs b/src/lists.rs index 731d310a5d4..e6ee8a7df44 100644 --- a/src/lists.rs +++ b/src/lists.rs @@ -454,6 +454,7 @@ where prev_span_end: BytePos, next_span_start: BytePos, terminator: &'a str, + leave_last: bool, } impl<'a, T, I, F1, F2, F3> Iterator for ListItems<'a, I, F1, F2, F3> @@ -592,7 +593,11 @@ where ListItem { pre_comment: pre_comment, pre_comment_style: pre_comment_style, - item: (self.get_item_string)(&item), + item: if self.inner.peek().is_none() && self.leave_last { + None + } else { + (self.get_item_string)(&item) + }, post_comment: post_comment, new_lines: new_lines, } @@ -610,6 +615,7 @@ pub fn itemize_list<'a, T, I, F1, F2, F3>( get_item_string: F3, prev_span_end: BytePos, next_span_start: BytePos, + leave_last: bool, ) -> ListItems<'a, I, F1, F2, F3> where I: Iterator, @@ -626,6 +632,7 @@ where prev_span_end: prev_span_end, next_span_start: next_span_start, terminator: terminator, + leave_last: leave_last, } } diff --git a/src/patterns.rs b/src/patterns.rs index 03afe2d81b1..628c207d750 100644 --- a/src/patterns.rs +++ b/src/patterns.rs @@ -162,6 +162,7 @@ fn rewrite_struct_pat( |f| f.node.rewrite(context, v_shape), context.codemap.span_after(span, "{"), span.hi, + false, ); let item_vec = items.collect::>(); @@ -342,6 +343,7 @@ fn count_wildcard_suffix_len( |item| item.rewrite(context, shape), context.codemap.span_after(span, "("), span.hi - BytePos(1), + false, ).collect(); for item in items.iter().rev().take_while(|i| match i.item { diff --git a/src/types.rs b/src/types.rs index 2927aa7425b..f7cb3c53656 100644 --- a/src/types.rs +++ b/src/types.rs @@ -241,6 +241,7 @@ fn rewrite_segment( |seg| seg.rewrite(context, generics_shape), list_lo, span_hi, + false, ); let generics_str = try_opt!(format_generics_item_list( context, @@ -344,6 +345,7 @@ where }, list_lo, span.hi, + false, ); let item_vec: Vec<_> = items.collect(); diff --git a/src/vertical.rs b/src/vertical.rs index 521341702c5..fbb4ddd3bc8 100644 --- a/src/vertical.rs +++ b/src/vertical.rs @@ -219,6 +219,7 @@ fn rewrite_aligned_items_inner( |field| field.rewrite_aligned_item(context, item_shape, field_prefix_max_width), span.lo, span.hi, + false, ).collect::>(); let tactic = definitive_tactic( diff --git a/src/visitor.rs b/src/visitor.rs index 3e23f1a399d..bcc219107f4 100644 --- a/src/visitor.rs +++ b/src/visitor.rs @@ -818,6 +818,7 @@ impl Rewrite for ast::MetaItem { |nested_meta_item| nested_meta_item.rewrite(context, item_shape), self.span.lo, hi, + false, ); let item_vec = items.collect::>(); let fmt = ListFormatting {