_ => false,
} && !fd.inputs.is_empty();
+ let mut args_last_line_contains_comment = false;
if put_args_in_block {
arg_indent = indent.block_indent(context.config);
result.push('\n');
if context.config.spaces_within_parens() && fd.inputs.len() > 0 {
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(')');
}
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 {
ti.id,
ast::Defaultness::Final);
}
- ast::TraitItemKind::Type(ref type_param_bounds, _) => {
+ ast::TraitItemKind::Type(ref type_param_bounds, ref type_default) => {
let rewrite = rewrite_associated_type(ti.ident,
- None,
+ type_default.as_ref(),
Some(type_param_bounds),
&self.get_context(),
self.block_indent);
--- /dev/null
+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>;
+}