diff --git a/src/items.rs b/src/items.rs index b5e38c58267e..70cd7faad8bb 100644 --- a/src/items.rs +++ b/src/items.rs @@ -1141,14 +1141,15 @@ pub(crate) fn format_trait( } result.push('{'); - let snippet = context.snippet(item.span); + let block_span = mk_sp(generics.where_clause.span.hi(), item.span.hi()); + let snippet = context.snippet(block_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); visitor.block_indent = offset.block_only().block_indent(context.config); - visitor.last_pos = item.span.lo() + BytePos(open_pos as u32); + visitor.last_pos = block_span.lo() + BytePos(open_pos as u32); for item in trait_items { visitor.visit_trait_item(item); diff --git a/tests/source/const_generics.rs b/tests/source/const_generics.rs index 420810b92ead..07ef99107a80 100644 --- a/tests/source/const_generics.rs +++ b/tests/source/const_generics.rs @@ -30,3 +30,7 @@ fn foo() { } type Foo = [i32; N + 1]; + +pub trait Foo: Bar<{Baz::COUNT}> { + const ASD: usize; +} diff --git a/tests/target/const_generics.rs b/tests/target/const_generics.rs index f60b7eb08800..f49c5a1bb104 100644 --- a/tests/target/const_generics.rs +++ b/tests/target/const_generics.rs @@ -22,3 +22,7 @@ fn foo() { } type Foo = [i32; N + 1]; + +pub trait Foo: Bar<{ Baz::COUNT }> { + const ASD: usize; +}