Skip to content

Commit 8d7cf1a

Browse files
committed
Fix spacing in pretty printed PatKind::Struct with no fields
1 parent df96fb1 commit 8d7cf1a

File tree

3 files changed

+20
-8
lines changed

3 files changed

+20
-8
lines changed

Diff for: compiler/rustc_ast_pretty/src/pprust/state.rs

+8-2
Original file line numberDiff line numberDiff line change
@@ -2460,7 +2460,11 @@ impl<'a> State<'a> {
24602460
self.print_path(path, true, 0);
24612461
}
24622462
self.nbsp();
2463-
self.word_space("{");
2463+
self.word("{");
2464+
let empty = fields.is_empty() && !etc;
2465+
if !empty {
2466+
self.space();
2467+
}
24642468
self.commasep_cmnt(
24652469
Consistent,
24662470
&fields,
@@ -2481,7 +2485,9 @@ impl<'a> State<'a> {
24812485
}
24822486
self.word("..");
24832487
}
2484-
self.space();
2488+
if !empty {
2489+
self.space();
2490+
}
24852491
self.word("}");
24862492
}
24872493
PatKind::Tuple(ref elts) => {

Diff for: compiler/rustc_hir_pretty/src/lib.rs

+8-2
Original file line numberDiff line numberDiff line change
@@ -1874,7 +1874,11 @@ impl<'a> State<'a> {
18741874
PatKind::Struct(ref qpath, ref fields, etc) => {
18751875
self.print_qpath(qpath, true);
18761876
self.nbsp();
1877-
self.word_space("{");
1877+
self.word("{");
1878+
let empty = fields.is_empty() && !etc;
1879+
if !empty {
1880+
self.space();
1881+
}
18781882
self.commasep_cmnt(
18791883
Consistent,
18801884
&fields,
@@ -1895,7 +1899,9 @@ impl<'a> State<'a> {
18951899
}
18961900
self.word("..");
18971901
}
1898-
self.space();
1902+
if !empty {
1903+
self.space();
1904+
}
18991905
self.word("}");
19001906
}
19011907
PatKind::Or(ref pats) => {

Diff for: src/test/ui/macros/stringify.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -661,9 +661,9 @@ fn test_pat() {
661661
assert_eq!(stringify_pat!(ref mut _x @ _), "ref mut _x @ _");
662662

663663
// PatKind::Struct
664-
assert_eq!(stringify_pat!(Struct {}), "Struct { }"); // FIXME
665-
assert_eq!(stringify_pat!(Struct::<u8> {}), "Struct::<u8> { }");
666-
assert_eq!(stringify_pat!(Struct::<'static> {}), "Struct::<'static> { }");
664+
assert_eq!(stringify_pat!(Struct {}), "Struct {}");
665+
assert_eq!(stringify_pat!(Struct::<u8> {}), "Struct::<u8> {}");
666+
assert_eq!(stringify_pat!(Struct::<'static> {}), "Struct::<'static> {}");
667667
assert_eq!(stringify_pat!(Struct { x }), "Struct { x }");
668668
assert_eq!(stringify_pat!(Struct { x: _x }), "Struct { x: _x }");
669669
assert_eq!(stringify_pat!(Struct { .. }), "Struct { .. }");
@@ -672,7 +672,7 @@ fn test_pat() {
672672
#[rustfmt::skip] // https://github.com/rust-lang/rustfmt/issues/5151
673673
assert_eq!(
674674
stringify_pat!(<Struct as Trait>::Type {}),
675-
"<Struct as Trait>::Type { }",
675+
"<Struct as Trait>::Type {}",
676676
);
677677

678678
// PatKind::TupleStruct

0 commit comments

Comments
 (0)