Put closing paren on the next line when the last arg contains comment

This commit is contained in:
topecongiro 2017-05-26 13:14:36 +09:00
parent 3d135ebba4
commit 0869bca85a
2 changed files with 21 additions and 1 deletions

View file

@ -1634,6 +1634,7 @@ fn rewrite_fn_base(context: &RewriteContext,
_ => false, _ => false,
} && !fd.inputs.is_empty(); } && !fd.inputs.is_empty();
let mut args_last_line_contains_comment = false;
if put_args_in_block { if put_args_in_block {
arg_indent = indent.block_indent(context.config); arg_indent = indent.block_indent(context.config);
result.push('\n'); result.push('\n');
@ -1647,6 +1648,16 @@ fn rewrite_fn_base(context: &RewriteContext,
if context.config.spaces_within_parens() && fd.inputs.len() > 0 { if context.config.spaces_within_parens() && fd.inputs.len() > 0 {
result.push(' ') result.push(' ')
} }
// If the last line of args contains comment, we cannot put the closing paren
// on the same line.
if arg_str
.lines()
.last()
.map_or(false, |last_line| last_line.contains("//")) {
args_last_line_contains_comment = true;
result.push('\n');
result.push_str(&arg_indent.to_string(context.config));
}
result.push(')'); result.push(')');
} }
@ -1670,7 +1681,8 @@ fn rewrite_fn_base(context: &RewriteContext,
let overlong_sig = sig_length > context.config.max_width(); let overlong_sig = sig_length > context.config.max_width();
result.contains('\n') || multi_line_ret_str || overlong_sig (!args_last_line_contains_comment) &&
(result.contains('\n') || multi_line_ret_str || overlong_sig)
} }
}; };
let ret_indent = if ret_should_indent { let ret_indent = if ret_should_indent {

View file

@ -0,0 +1,8 @@
pub trait X {
fn a(&self) -> &'static str;
fn bcd(&self,
c: &str, // comment on this arg
d: u16, // comment on this arg
e: &Vec<String> // comment on this arg
) -> Box<Q>;
}