diff --git a/crates/hir/src/display.rs b/crates/hir/src/display.rs index 1c3eac1590..c276e87786 100644 --- a/crates/hir/src/display.rs +++ b/crates/hir/src/display.rs @@ -249,19 +249,23 @@ fn display_fields( } } else { f.write_char('{')?; - f.write_char(separator)?; - for field in &fields[..count] { - f.write_str(indent)?; - field.hir_fmt(f)?; - f.write_char(',')?; + + if !fields.is_empty() { f.write_char(separator)?; + for field in &fields[..count] { + f.write_str(indent)?; + field.hir_fmt(f)?; + f.write_char(',')?; + f.write_char(separator)?; + } + + if fields.len() > count { + f.write_str(indent)?; + f.write_str("/* … */")?; + f.write_char(separator)?; + } } - if fields.len() > count { - f.write_str(indent)?; - f.write_str("/* … */")?; - f.write_char(separator)?; - } f.write_str("}")?; } diff --git a/crates/ide/src/hover/tests.rs b/crates/ide/src/hover/tests.rs index ff3258b4db..52e57d7889 100644 --- a/crates/ide/src/hover/tests.rs +++ b/crates/ide/src/hover/tests.rs @@ -1039,7 +1039,27 @@ fn hover_record_struct_limit() { struct Foo { /* … */ } ``` "#]], - ) + ); + + // No extra spaces within `{}` when there are no fields + check_hover_fields_limit( + 5, + r#" + struct Foo$0 {} + "#, + expect![[r#" + *Foo* + + ```rust + test + ``` + + ```rust + // size = 0, align = 1 + struct Foo {} + ``` + "#]], + ); } #[test]