about summary refs log tree commit diff
path: root/src/patterns.rs
diff options
context:
space:
mode:
authorcrw5996 <henry11>2018-08-27 12:31:26 -0400
committercrw5996 <henry11>2018-08-27 15:25:40 -0400
commit5d642e8b234e96b360ef94734f724af12b36abb6 (patch)
tree71f347eef1d41455c73c86cb65c3ace48f6025d0 /src/patterns.rs
parent448460958347cc633c9aea993253be076fda1580 (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.rs33
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<_>>();