Put the opening brace of impl on the next line
We put the opening brace on the next line if the following conditions hold: 1. the result before '{' ends with comments or contains newline 2. the last line of the result before '{' is not extendable (i.e. consists of '>' and whitespaces).
This commit is contained in:
parent
c355f3854c
commit
19d6a3c786
3 changed files with 9 additions and 8 deletions
|
@ -33,8 +33,8 @@ use types::join_bounds;
|
|||
use utils::{colon_spaces, contains_skip, first_line_width, format_abi, format_constness,
|
||||
format_defaultness, format_mutability, format_unsafety, format_visibility,
|
||||
is_attributes_extendable, last_line_contains_single_line_comment,
|
||||
last_line_used_width, last_line_width, mk_sp, semicolon_for_expr, starts_with_newline,
|
||||
stmt_expr, trimmed_last_line_width};
|
||||
last_line_extendable, last_line_used_width, last_line_width, mk_sp,
|
||||
semicolon_for_expr, starts_with_newline, stmt_expr, trimmed_last_line_width};
|
||||
use vertical::rewrite_with_alignment;
|
||||
use visitor::FmtVisitor;
|
||||
|
||||
|
@ -639,8 +639,10 @@ pub fn format_impl(
|
|||
}
|
||||
result.push_str(&where_clause_str);
|
||||
|
||||
let need_newline = !last_line_extendable(&result)
|
||||
&& (last_line_contains_single_line_comment(&result) || result.contains('\n'));
|
||||
match context.config.brace_style() {
|
||||
_ if last_line_contains_single_line_comment(&result) => result.push_str(&sep),
|
||||
_ if need_newline => result.push_str(&sep),
|
||||
BraceStyle::AlwaysNextLine => result.push_str(&sep),
|
||||
BraceStyle::PreferSameLine => result.push(' '),
|
||||
BraceStyle::SameLineWhere => {
|
||||
|
|
|
@ -178,7 +178,7 @@ pub fn last_line_extendable(s: &str) -> bool {
|
|||
}
|
||||
for c in s.chars().rev() {
|
||||
match c {
|
||||
')' | ']' | '}' | '?' => continue,
|
||||
')' | ']' | '}' | '?' | '>' => continue,
|
||||
'\n' => break,
|
||||
_ if c.is_whitespace() => continue,
|
||||
_ => return false,
|
||||
|
|
|
@ -110,7 +110,6 @@ DDDDDDDDDDDDDDDDDDDD,
|
|||
fn foo() {}
|
||||
}
|
||||
|
||||
|
||||
// Trait aliases
|
||||
trait FooBar = Foo + Bar;
|
||||
trait FooBar<A, B, C> = Foo + Bar;
|
||||
|
|
Loading…
Reference in a new issue