about summary refs log tree commit diff
path: root/src/chains.rs
diff options
context:
space:
mode:
authorMarcus Klaas <mail@marcusklaas.nl>2015-09-09 23:13:37 +0200
committerMarcus Klaas <mail@marcusklaas.nl>2015-09-11 00:53:01 +0200
commitabe8e7de990b88e2b3d7349bc1fc240b4eb49bad (patch)
tree12737f9e45f8596e526c846b3a4c924b20370b7a /src/chains.rs
parent749a9689be022f2737820a87fe09d930907435a5 (diff)
Add tests for chain expressions
Diffstat (limited to 'src/chains.rs')
-rw-r--r--src/chains.rs9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/chains.rs b/src/chains.rs
index 4f395df0487..e5d2a43840b 100644
--- a/src/chains.rs
+++ b/src/chains.rs
@@ -34,8 +34,11 @@ pub fn rewrite_chain(orig_expr: &ast::Expr,
     }
 
     let parent_rewrite = try_opt!(expr.rewrite(context, width, offset));
+    let total_width = rewrites.iter().fold(0, |a, b| a + b.len()) + parent_rewrite.len();
+    let fits_single_line = total_width <= width && rewrites.iter().all(|s| !s.contains('\n'));
 
-    if rewrites.len() == 1 {
+    if rewrites.len() == 1 && !fits_single_line &&
+       (is_continuable(expr) || parent_rewrite.len() <= context.config.tab_spaces) {
         let extra_offset = extra_offset(&parent_rewrite, offset);
         let offset = offset + extra_offset;
         let max_width = try_opt!(width.checked_sub(extra_offset));
@@ -47,9 +50,7 @@ pub fn rewrite_chain(orig_expr: &ast::Expr,
         return Some(format!("{}{}", parent_rewrite, try_opt!(rerewrite)));
     }
 
-    let total_width = rewrites.iter().fold(0, |a, b| a + b.len()) + parent_rewrite.len();
-
-    let connector = if total_width <= width && rewrites.iter().all(|s| !s.contains('\n')) {
+    let connector = if fits_single_line {
         String::new()
     } else {
         format!("\n{}", make_indent(indent))