From 2c1d896f6078521aedd9e153ad6940bb2917cf2f Mon Sep 17 00:00:00 2001 From: topecongiro Date: Wed, 3 May 2017 11:22:36 +0900 Subject: [PATCH] Split a long chain with a single child --- src/chains.rs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/chains.rs b/src/chains.rs index 8e176fce7241..8cb726bd4b4b 100644 --- a/src/chains.rs +++ b/src/chains.rs @@ -176,9 +176,15 @@ pub fn rewrite_chain(expr: &ast::Expr, context: &RewriteContext, shape: Shape) - .fold(0, |a, b| a + first_line_width(b)) + parent_rewrite.len(); let one_line_len = rewrites.iter().fold(0, |a, r| a + r.len()) + parent_rewrite.len(); - let veto_single_line = if one_line_len > context.config.chain_one_line_max - 1 && - rewrites.len() > 1 { - true + let veto_single_line = if one_line_len > context.config.chain_one_line_max - 1 { + if rewrites.len() > 1 { + true + } else if rewrites.len() == 1 { + let one_line_len = parent_rewrite.len() + first_line_width(&rewrites[0]); + one_line_len > shape.width + } else { + false + } } else if context.config.take_source_hints && subexpr_list.len() > 1 { // Look at the source code. Unless all chain elements start on the same // line, we won't consider putting them on a single line either.