diff --git a/src/items.rs b/src/items.rs index acddabd93fe..ef9e049f725 100644 --- a/src/items.rs +++ b/src/items.rs @@ -1636,6 +1636,7 @@ fn rewrite_fn_base(context: &RewriteContext, } || (put_args_in_block && ret_str.is_empty()); if where_clause.predicates.len() == 1 && should_compress_where { + // TODO hitting this path, but using a newline let budget = try_opt!(context.config.max_width.checked_sub(last_line_width(&result))); if let Some(where_clause_str) = rewrite_where_clause(context, @@ -1647,14 +1648,15 @@ fn rewrite_fn_base(context: &RewriteContext, !has_body, put_args_in_block && ret_str.is_empty(), Some(span.hi)) { - if last_line_width(&result) + where_clause_str.len() > context.config.max_width && - !where_clause_str.contains('\n') { - result.push('\n'); + if !where_clause_str.contains('\n') { + if last_line_width(&result) + where_clause_str.len() > context.config.max_width { + result.push('\n'); + } + + result.push_str(&where_clause_str); + + return Some((result, force_new_line_for_brace)); } - - result.push_str(&where_clause_str); - - return Some((result, force_new_line_for_brace)); } } diff --git a/tests/target/where-clause-rfc.rs b/tests/target/where-clause-rfc.rs index 5a589280887..ff63241f8c7 100644 --- a/tests/target/where-clause-rfc.rs +++ b/tests/target/where-clause-rfc.rs @@ -78,8 +78,7 @@ pub trait Test { fn very_long_function_name<F>(very_long_argument: F) -> MyVeryLongReturnType where - F: FnMut(Self::Item) - -> bool + F: FnMut(Self::Item) -> bool { }