Add leave_last field to ListItems

This commit is contained in:
topecongiro 2017-08-07 17:29:55 +09:00
parent f9239dd630
commit be38606c77
8 changed files with 25 additions and 1 deletions

View File

@ -466,6 +466,7 @@ where
|item| item.rewrite(context, nested_shape),
span.lo,
span.hi,
false,
).collect::<Vec<_>>();
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::<Vec<_>>();
// 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::<Vec<_>>();
@ -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(

View File

@ -442,6 +442,7 @@ fn rewrite_use_list(
rewrite_path_item,
context.codemap.span_after(span, "{"),
span.hi,
false,
);
items.extend(iter);
items

View File

@ -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::<Vec<_>>();
// FIXME: we don't need to collect here if the where_layout isn't

View File

@ -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<Item = T>,
@ -626,6 +632,7 @@ where
prev_span_end: prev_span_end,
next_span_start: next_span_start,
terminator: terminator,
leave_last: leave_last,
}
}

View File

@ -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::<Vec<_>>();
@ -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 {

View File

@ -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();

View File

@ -219,6 +219,7 @@ fn rewrite_aligned_items_inner<T: AlignedItem>(
|field| field.rewrite_aligned_item(context, item_shape, field_prefix_max_width),
span.lo,
span.hi,
false,
).collect::<Vec<_>>();
let tactic = definitive_tactic(

View File

@ -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::<Vec<_>>();
let fmt = ListFormatting {