diff options
| author | Nick Cameron <nrc@ncameron.org> | 2017-05-26 08:43:52 +1200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-05-26 08:43:52 +1200 |
| commit | 3d135ebba473afd378fd08d25e9caad8deaea8d3 (patch) | |
| tree | 820124e6a4f84ed000d498147c283e1b14bb06c8 /src/items.rs | |
| parent | 662811b3f0a4187f1a27eaa9880581329f256d85 (diff) | |
| parent | 92270ba191e53fa3d9a5dbdc8cc36b5f8749cbd7 (diff) | |
Merge pull request #1586 from topecongiro/minor
Fix minor bugs
Diffstat (limited to 'src/items.rs')
| -rw-r--r-- | src/items.rs | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/src/items.rs b/src/items.rs index 37ffb4792eb..34d2b6ea530 100644 --- a/src/items.rs +++ b/src/items.rs @@ -1564,7 +1564,12 @@ fn rewrite_fn_base(context: &RewriteContext, // Args. let (mut one_line_budget, mut multi_line_budget, mut arg_indent) = - try_opt!(compute_budgets_for_args(context, &result, indent, ret_str_len, newline_brace)); + try_opt!(compute_budgets_for_args(context, + &result, + indent, + ret_str_len, + newline_brace, + has_braces)); if context.config.fn_args_layout() == IndentStyle::Block { arg_indent = indent.block_indent(context.config); @@ -1906,7 +1911,8 @@ fn compute_budgets_for_args(context: &RewriteContext, result: &str, indent: Indent, ret_str_len: usize, - newline_brace: bool) + newline_brace: bool, + has_braces: bool) -> Option<((usize, usize, Indent))> { debug!("compute_budgets_for_args {} {:?}, {}, {}", result.len(), @@ -1915,10 +1921,17 @@ fn compute_budgets_for_args(context: &RewriteContext, newline_brace); // Try keeping everything on the same line. if !result.contains('\n') { - // 3 = `() `, space is before ret_string. - let mut used_space = indent.width() + result.len() + ret_str_len + 3; - if !newline_brace { - used_space += 2; + // 2 = `()`, 3 = `() `, space is before ret_string. + let overhead = if ret_str_len == 0 { 2 } else { 3 }; + let mut used_space = indent.width() + result.len() + ret_str_len + overhead; + if has_braces { + if !newline_brace { + // 2 = `{}` + used_space += 2; + } + } else { + // 1 = `;` + used_space += 1; } let one_line_budget = context .config |
