@@ -85,20 +85,26 @@ impl<'a> FmtVisitor<'a> {
85
85
let snippet = self . snippet ( span) ;
86
86
let brace_pos = snippet. find_uncommented ( "{" ) . unwrap ( ) ;
87
87
88
- if fm. items . is_empty ( ) && !contains_comment ( & snippet[ brace_pos..] ) {
89
- self . buffer . push_str ( "{" ) ;
90
- } else {
88
+ self . buffer . push_str ( "{" ) ;
89
+ if !fm. items . is_empty ( ) || contains_comment ( & snippet[ brace_pos..] ) {
91
90
// FIXME: this skips comments between the extern keyword and the opening
92
91
// brace.
93
- self . last_pos = span. lo + BytePos ( brace_pos as u32 ) ;
92
+ self . last_pos = span. lo + BytePos ( brace_pos as u32 + 1 ) ;
94
93
self . block_indent = self . block_indent . block_indent ( self . config ) ;
95
94
96
- for item in & fm. items {
97
- self . format_foreign_item ( & * item) ;
98
- }
95
+ if fm. items . is_empty ( ) {
96
+ self . format_missing_no_indent ( span. hi - BytePos ( 1 ) ) ;
97
+ self . block_indent = self . block_indent . block_unindent ( self . config ) ;
98
+
99
+ self . buffer . push_str ( & self . block_indent . to_string ( self . config ) ) ;
100
+ } else {
101
+ for item in & fm. items {
102
+ self . format_foreign_item ( & * item) ;
103
+ }
99
104
100
- self . block_indent = self . block_indent . block_unindent ( self . config ) ;
101
- self . format_missing_with_indent ( span. hi - BytePos ( 1 ) ) ;
105
+ self . block_indent = self . block_indent . block_unindent ( self . config ) ;
106
+ self . format_missing_with_indent ( span. hi - BytePos ( 1 ) ) ;
107
+ }
102
108
}
103
109
104
110
self . buffer . push_str ( "}" ) ;
@@ -299,7 +305,8 @@ impl<'a> FmtVisitor<'a> {
299
305
self . buffer . push_str ( & format_header ( "enum " , ident, vis) ) ;
300
306
301
307
let enum_snippet = self . snippet ( span) ;
302
- let body_start = span. lo + BytePos ( enum_snippet. find_uncommented ( "{" ) . unwrap ( ) as u32 + 1 ) ;
308
+ let brace_pos = enum_snippet. find_uncommented ( "{" ) . unwrap ( ) ;
309
+ let body_start = span. lo + BytePos ( brace_pos as u32 + 1 ) ;
303
310
let generics_str = format_generics ( & self . get_context ( ) ,
304
311
generics,
305
312
"{" ,
@@ -318,11 +325,17 @@ impl<'a> FmtVisitor<'a> {
318
325
let variant_list = self . format_variant_list ( enum_def, body_start, span. hi - BytePos ( 1 ) ) ;
319
326
match variant_list {
320
327
Some ( ref body_str) => self . buffer . push_str ( & body_str) ,
321
- None => self . format_missing ( span. hi - BytePos ( 1 ) ) ,
328
+ None => {
329
+ if contains_comment ( & enum_snippet[ brace_pos..] ) {
330
+ self . format_missing_no_indent ( span. hi - BytePos ( 1 ) )
331
+ } else {
332
+ self . format_missing ( span. hi - BytePos ( 1 ) )
333
+ }
334
+ }
322
335
}
323
336
self . block_indent = self . block_indent . block_unindent ( self . config ) ;
324
337
325
- if variant_list. is_some ( ) {
338
+ if variant_list. is_some ( ) || contains_comment ( & enum_snippet [ brace_pos.. ] ) {
326
339
self . buffer . push_str ( & self . block_indent . to_string ( self . config ) ) ;
327
340
}
328
341
self . buffer . push_str ( "}" ) ;
0 commit comments