diff options
| author | crw5996 <henry11> | 2018-08-27 12:31:26 -0400 |
|---|---|---|
| committer | crw5996 <henry11> | 2018-08-27 15:25:40 -0400 |
| commit | 5d642e8b234e96b360ef94734f724af12b36abb6 (patch) | |
| tree | 71f347eef1d41455c73c86cb65c3ace48f6025d0 /src/patterns.rs | |
| parent | 448460958347cc633c9aea993253be076fda1580 (diff) | |
Fixed #2955. Added value to determine whether or not rustfmt has condensed a tuple-struct
Refactored to not use a mutable variable
Diffstat (limited to 'src/patterns.rs')
| -rw-r--r-- | src/patterns.rs | 33 |
1 files changed, 16 insertions, 17 deletions
diff --git a/src/patterns.rs b/src/patterns.rs index 90725972bd5..d5c4802904b 100644 --- a/src/patterns.rs +++ b/src/patterns.rs @@ -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<_>>(); |
