Merge pull request #3100 from topecongiro/issue-3092
Fix poor formatting of empty trait with generic bounds
This commit is contained in:
commit
a6ef302236
4 changed files with 26 additions and 3 deletions
|
|
@ -1937,7 +1937,9 @@ fn shape_from_rhs_tactic(
|
|||
rhs_tactic: RhsTactics,
|
||||
) -> Option<Shape> {
|
||||
match rhs_tactic {
|
||||
RhsTactics::ForceNextLineWithoutIndent => Some(shape.with_max_width(context.config)),
|
||||
RhsTactics::ForceNextLineWithoutIndent => shape
|
||||
.with_max_width(context.config)
|
||||
.sub_width(shape.indent.width()),
|
||||
RhsTactics::Default => {
|
||||
Shape::indented(shape.indent.block_indent(context.config), context.config)
|
||||
.sub_width(shape.rhs_overhead(context.config))
|
||||
|
|
|
|||
|
|
@ -1121,6 +1121,7 @@ pub fn format_trait(context: &RewriteContext, item: &ast::Item, offset: Indent)
|
|||
|
||||
let snippet = context.snippet(item.span);
|
||||
let open_pos = snippet.find_uncommented("{")? + 1;
|
||||
let outer_indent_str = offset.block_only().to_string_with_newline(context.config);
|
||||
|
||||
if !trait_items.is_empty() || contains_comment(&snippet[open_pos..]) {
|
||||
let mut visitor = FmtVisitor::from_context(context);
|
||||
|
|
@ -1134,13 +1135,12 @@ pub fn format_trait(context: &RewriteContext, item: &ast::Item, offset: Indent)
|
|||
visitor.format_missing(item.span.hi() - BytePos(1));
|
||||
|
||||
let inner_indent_str = visitor.block_indent.to_string_with_newline(context.config);
|
||||
let outer_indent_str = offset.block_only().to_string_with_newline(context.config);
|
||||
|
||||
result.push_str(&inner_indent_str);
|
||||
result.push_str(visitor.buffer.to_string().trim());
|
||||
result.push_str(&outer_indent_str);
|
||||
} else if result.contains('\n') {
|
||||
result.push('\n');
|
||||
result.push_str(&outer_indent_str);
|
||||
}
|
||||
|
||||
result.push('}');
|
||||
|
|
|
|||
|
|
@ -106,3 +106,12 @@ trait Foo<'a> {
|
|||
impl<'a> Foo<'a> for i32 {
|
||||
type Bar< 'a > = i32;
|
||||
}
|
||||
|
||||
// #3092
|
||||
pub mod test {
|
||||
pub trait ATraitWithALooongName {}
|
||||
pub trait ATrait
|
||||
:ATraitWithALooongName + ATraitWithALooongName + ATraitWithALooongName + ATraitWithALooongName
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -144,3 +144,15 @@ trait Foo<'a> {
|
|||
impl<'a> Foo<'a> for i32 {
|
||||
type Bar<'a> = i32;
|
||||
}
|
||||
|
||||
// #3092
|
||||
pub mod test {
|
||||
pub trait ATraitWithALooongName {}
|
||||
pub trait ATrait:
|
||||
ATraitWithALooongName
|
||||
+ ATraitWithALooongName
|
||||
+ ATraitWithALooongName
|
||||
+ ATraitWithALooongName
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue