diff --git a/src/formatting/items.rs b/src/formatting/items.rs index b818732d23e..82677696e6a 100644 --- a/src/formatting/items.rs +++ b/src/formatting/items.rs @@ -1388,7 +1388,12 @@ pub(crate) fn format_struct_struct( result.push_str(&header_str); let header_hi = struct_parts.ident.span.hi(); - let body_lo = context.snippet_provider.span_after_last(span, "{"); + let after_generics_span = struct_parts.generics.map_or(span, |generics| { + mk_sp(generics.where_clause.span.hi(), span.hi()) + }); + let body_lo = context + .snippet_provider + .span_after(after_generics_span, "{"); let generics_str = match struct_parts.generics { Some(g) => format_generics( diff --git a/tests/source/issue_4724.rs b/tests/source/issue_4724.rs new file mode 100644 index 00000000000..73f2688df62 --- /dev/null +++ b/tests/source/issue_4724.rs @@ -0,0 +1 @@ +struct x{/** */#[x="{"]x:x} \ No newline at end of file diff --git a/tests/target/issue_4724.rs b/tests/target/issue_4724.rs new file mode 100644 index 00000000000..225c9155403 --- /dev/null +++ b/tests/target/issue_4724.rs @@ -0,0 +1,5 @@ +struct x { + /** */ + #[x = "{"] + x: x, +}