Merge pull request #2972 from crw5996/fix-optional-arg-condensing

Fix optional arg condensing
This commit is contained in:
Nick Cameron 2018-08-28 14:09:31 +12:00 committed by GitHub
commit c4d845f998
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 28 additions and 17 deletions

View File

@ -336,29 +336,28 @@ fn rewrite_tuple_pat(
));
pat_vec.insert(pos, dotdot);
}
if pat_vec.is_empty() {
return Some(format!("{}()", path_str.unwrap_or_default()));
}
let wildcard_suffix_len = count_wildcard_suffix_len(context, &pat_vec, span, shape);
let (pat_vec, span) = if context.config.condense_wildcard_suffixes() && wildcard_suffix_len >= 2
{
let new_item_count = 1 + pat_vec.len() - wildcard_suffix_len;
let sp = pat_vec[new_item_count - 1].span();
let snippet = context.snippet(sp);
let lo = sp.lo() + BytePos(snippet.find_uncommented("_").unwrap() as u32);
pat_vec[new_item_count - 1] = TuplePatField::Dotdot(mk_sp(lo, lo + BytePos(1)));
(
&pat_vec[..new_item_count],
mk_sp(span.lo(), lo + BytePos(1)),
)
} else {
(&pat_vec[..], span)
};
let (pat_vec, span, condensed) =
if context.config.condense_wildcard_suffixes() && wildcard_suffix_len >= 2 {
let new_item_count = 1 + pat_vec.len() - wildcard_suffix_len;
let sp = pat_vec[new_item_count - 1].span();
let snippet = context.snippet(sp);
let lo = sp.lo() + BytePos(snippet.find_uncommented("_").unwrap() as u32);
pat_vec[new_item_count - 1] = TuplePatField::Dotdot(mk_sp(lo, lo + BytePos(1)));
(
&pat_vec[..new_item_count],
mk_sp(span.lo(), lo + BytePos(1)),
true,
)
} else {
(&pat_vec[..], span, false)
};
// add comma if `(x,)`
let add_comma = path_str.is_none() && pat_vec.len() == 1 && dotdot_pos.is_none();
let add_comma = path_str.is_none() && pat_vec.len() == 1 && dotdot_pos.is_none() && !condensed;
let path_str = path_str.unwrap_or_default();
let pat_ref_vec = pat_vec.iter().collect::<Vec<_>>();

View File

@ -0,0 +1,6 @@
// rustfmt-condense_wildcard_suffixes: true
fn main() {
match (1, 2, 3) {
(_, _, _) => (),
}
}

View File

@ -0,0 +1,6 @@
// rustfmt-condense_wildcard_suffixes: true
fn main() {
match (1, 2, 3) {
(..) => (),
}
}