]> git.lizzy.rs Git - rust.git/commitdiff
Use mixed layout for patterns that are all short
authortopecongiro <seuchida@gmail.com>
Thu, 16 Nov 2017 08:40:33 +0000 (17:40 +0900)
committertopecongiro <seuchida@gmail.com>
Thu, 16 Nov 2017 08:43:36 +0000 (17:43 +0900)
src/expr.rs

index ab9bc2fa240b6f9f2e420bc136a2b0b47a8f9dbe..4716974153ba9d9ef57aa0e2acc7816bb6e1ed81 100644 (file)
@@ -1457,13 +1457,20 @@ fn rewrite_match_pattern(
         .map(|p| p.rewrite(context, pat_shape))
         .collect::<Option<Vec<_>>>()?;
 
+    let use_mixed_layout = pats.iter()
+        .zip(pat_strs.iter())
+        .all(|(pat, pat_str)| is_short_pattern(pat, pat_str));
     let items: Vec<_> = pat_strs.into_iter().map(ListItem::from_str).collect();
-    let tactic = definitive_tactic(
-        &items,
-        ListTactic::HorizontalVertical,
-        Separator::VerticalBar,
-        pat_shape.width,
-    );
+    let tactic = if use_mixed_layout {
+        DefinitiveListTactic::Mixed
+    } else {
+        definitive_tactic(
+            &items,
+            ListTactic::HorizontalVertical,
+            Separator::VerticalBar,
+            pat_shape.width,
+        )
+    };
     let fmt = ListFormatting {
         tactic: tactic,
         separator: " |",