1
Fork 0

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), |item| item.rewrite(context, nested_shape),
span.lo, span.lo,
span.hi, span.hi,
false,
).collect::<Vec<_>>(); ).collect::<Vec<_>>();
if items.is_empty() { if items.is_empty() {
@ -587,6 +588,7 @@ fn rewrite_closure_fn_decl(
|arg| arg.rewrite(context, arg_shape), |arg| arg.rewrite(context, arg_shape),
context.codemap.span_after(span, "|"), context.codemap.span_after(span, "|"),
body.span.lo, body.span.lo,
false,
); );
let item_vec = arg_items.collect::<Vec<_>>(); let item_vec = arg_items.collect::<Vec<_>>();
// 1 = space between arguments and return type. // 1 = space between arguments and return type.
@ -2190,6 +2192,7 @@ where
|item| item.rewrite(context, shape), |item| item.rewrite(context, shape),
span.lo, span.lo,
span.hi, span.hi,
true,
); );
let mut item_vec: Vec<_> = items.collect(); let mut item_vec: Vec<_> = items.collect();
@ -2651,6 +2654,7 @@ fn rewrite_struct_lit<'a>(
rewrite, rewrite,
body_lo, body_lo,
span.hi, span.hi,
false,
); );
let item_vec = items.collect::<Vec<_>>(); let item_vec = items.collect::<Vec<_>>();
@ -2803,6 +2807,7 @@ where
|item| item.rewrite(context, nested_shape), |item| item.rewrite(context, nested_shape),
list_lo, list_lo,
span.hi - BytePos(1), span.hi - BytePos(1),
false,
); );
let item_vec: Vec<_> = items.collect(); let item_vec: Vec<_> = items.collect();
let tactic = definitive_tactic( let tactic = definitive_tactic(

View file

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

View file

@ -469,6 +469,7 @@ impl<'a> FmtVisitor<'a> {
|f| self.format_variant(f), |f| self.format_variant(f),
body_lo, body_lo,
body_hi, body_hi,
false,
); );
let shape = Shape::indented(self.block_indent, self.config) let shape = Shape::indented(self.block_indent, self.config)
@ -2207,6 +2208,7 @@ fn rewrite_args(
}, },
comment_span_start, comment_span_start,
span.hi, span.hi,
false,
); );
arg_items.extend(more_items); arg_items.extend(more_items);
@ -2411,6 +2413,7 @@ fn rewrite_generics_inner(
|&(_, ref str)| str.clone(), |&(_, ref str)| str.clone(),
context.codemap.span_after(span, "<"), context.codemap.span_after(span, "<"),
span.hi, span.hi,
false,
); );
format_generics_item_list(context, items, shape, one_line_width) 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), |pred| pred.rewrite(context, block_shape),
span_start, span_start,
span_end, span_end,
false,
); );
let comma_tactic = if where_clause_option.suppress_comma { let comma_tactic = if where_clause_option.suppress_comma {
SeparatorTactic::Never SeparatorTactic::Never
@ -2654,6 +2658,7 @@ fn rewrite_where_clause(
|pred| pred.rewrite(context, Shape::legacy(budget, offset)), |pred| pred.rewrite(context, Shape::legacy(budget, offset)),
span_start, span_start,
span_end, span_end,
false,
); );
let item_vec = items.collect::<Vec<_>>(); let item_vec = items.collect::<Vec<_>>();
// FIXME: we don't need to collect here if the where_layout isn't // 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, prev_span_end: BytePos,
next_span_start: BytePos, next_span_start: BytePos,
terminator: &'a str, terminator: &'a str,
leave_last: bool,
} }
impl<'a, T, I, F1, F2, F3> Iterator for ListItems<'a, I, F1, F2, F3> impl<'a, T, I, F1, F2, F3> Iterator for ListItems<'a, I, F1, F2, F3>
@ -592,7 +593,11 @@ where
ListItem { ListItem {
pre_comment: pre_comment, pre_comment: pre_comment,
pre_comment_style: pre_comment_style, 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, post_comment: post_comment,
new_lines: new_lines, new_lines: new_lines,
} }
@ -610,6 +615,7 @@ pub fn itemize_list<'a, T, I, F1, F2, F3>(
get_item_string: F3, get_item_string: F3,
prev_span_end: BytePos, prev_span_end: BytePos,
next_span_start: BytePos, next_span_start: BytePos,
leave_last: bool,
) -> ListItems<'a, I, F1, F2, F3> ) -> ListItems<'a, I, F1, F2, F3>
where where
I: Iterator<Item = T>, I: Iterator<Item = T>,
@ -626,6 +632,7 @@ where
prev_span_end: prev_span_end, prev_span_end: prev_span_end,
next_span_start: next_span_start, next_span_start: next_span_start,
terminator: terminator, terminator: terminator,
leave_last: leave_last,
} }
} }

View file

@ -162,6 +162,7 @@ fn rewrite_struct_pat(
|f| f.node.rewrite(context, v_shape), |f| f.node.rewrite(context, v_shape),
context.codemap.span_after(span, "{"), context.codemap.span_after(span, "{"),
span.hi, span.hi,
false,
); );
let item_vec = items.collect::<Vec<_>>(); let item_vec = items.collect::<Vec<_>>();
@ -342,6 +343,7 @@ fn count_wildcard_suffix_len(
|item| item.rewrite(context, shape), |item| item.rewrite(context, shape),
context.codemap.span_after(span, "("), context.codemap.span_after(span, "("),
span.hi - BytePos(1), span.hi - BytePos(1),
false,
).collect(); ).collect();
for item in items.iter().rev().take_while(|i| match i.item { 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), |seg| seg.rewrite(context, generics_shape),
list_lo, list_lo,
span_hi, span_hi,
false,
); );
let generics_str = try_opt!(format_generics_item_list( let generics_str = try_opt!(format_generics_item_list(
context, context,
@ -344,6 +345,7 @@ where
}, },
list_lo, list_lo,
span.hi, span.hi,
false,
); );
let item_vec: Vec<_> = items.collect(); 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), |field| field.rewrite_aligned_item(context, item_shape, field_prefix_max_width),
span.lo, span.lo,
span.hi, span.hi,
false,
).collect::<Vec<_>>(); ).collect::<Vec<_>>();
let tactic = definitive_tactic( 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), |nested_meta_item| nested_meta_item.rewrite(context, item_shape),
self.span.lo, self.span.lo,
hi, hi,
false,
); );
let item_vec = items.collect::<Vec<_>>(); let item_vec = items.collect::<Vec<_>>();
let fmt = ListFormatting { let fmt = ListFormatting {