diff options
| author | Marcus Klaas <mail@marcusklaas.nl> | 2015-09-09 23:13:37 +0200 |
|---|---|---|
| committer | Marcus Klaas <mail@marcusklaas.nl> | 2015-09-11 00:53:01 +0200 |
| commit | abe8e7de990b88e2b3d7349bc1fc240b4eb49bad (patch) | |
| tree | 12737f9e45f8596e526c846b3a4c924b20370b7a /src/chains.rs | |
| parent | 749a9689be022f2737820a87fe09d930907435a5 (diff) | |
Add tests for chain expressions
Diffstat (limited to 'src/chains.rs')
| -rw-r--r-- | src/chains.rs | 9 |
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)) |
