@@ -188,7 +188,7 @@ impl HirDisplay for Struct {
188
188
StructKind :: Record => {
189
189
let has_where_clause = write_where_clause ( def_id, f) ?;
190
190
if let Some ( limit) = f. entity_limit {
191
- display_fields_or_variants ( & self . fields ( f. db ) , has_where_clause, limit, f) ?;
191
+ display_fields ( & self . fields ( f. db ) , has_where_clause, limit, f) ?;
192
192
}
193
193
}
194
194
StructKind :: Unit => _ = write_where_clause ( def_id, f) ?,
@@ -208,7 +208,7 @@ impl HirDisplay for Enum {
208
208
209
209
let has_where_clause = write_where_clause ( def_id, f) ?;
210
210
if let Some ( limit) = f. entity_limit {
211
- display_fields_or_variants ( & self . variants ( f. db ) , has_where_clause, limit, f) ?;
211
+ display_variants ( & self . variants ( f. db ) , has_where_clause, limit, f) ?;
212
212
}
213
213
214
214
Ok ( ( ) )
@@ -225,35 +225,83 @@ impl HirDisplay for Union {
225
225
226
226
let has_where_clause = write_where_clause ( def_id, f) ?;
227
227
if let Some ( limit) = f. entity_limit {
228
- display_fields_or_variants ( & self . fields ( f. db ) , has_where_clause, limit, f) ?;
228
+ display_fields ( & self . fields ( f. db ) , has_where_clause, limit, f) ?;
229
229
}
230
230
Ok ( ( ) )
231
231
}
232
232
}
233
233
234
- fn display_fields_or_variants < T : HirDisplay > (
235
- fields_or_variants : & [ T ] ,
234
+ fn display_fields (
235
+ fields : & [ Field ] ,
236
236
has_where_clause : bool ,
237
237
limit : usize ,
238
238
f : & mut HirFormatter < ' _ > ,
239
239
) -> Result < ( ) , HirDisplayError > {
240
- let count = fields_or_variants . len ( ) . min ( limit) ;
240
+ let count = fields . len ( ) . min ( limit) ;
241
241
f. write_char ( if !has_where_clause { ' ' } else { '\n' } ) ?;
242
242
if count == 0 {
243
- if fields_or_variants . is_empty ( ) {
243
+ if fields . is_empty ( ) {
244
244
f. write_str ( "{}" ) ?;
245
245
} else {
246
246
f. write_str ( "{ /* … */ }" ) ?;
247
247
}
248
248
} else {
249
249
f. write_str ( "{\n " ) ?;
250
- for field in & fields_or_variants [ ..count] {
250
+ for field in & fields [ ..count] {
251
251
f. write_str ( " " ) ?;
252
252
field. hir_fmt ( f) ?;
253
253
f. write_str ( ",\n " ) ?;
254
254
}
255
255
256
- if fields_or_variants. len ( ) > count {
256
+ if fields. len ( ) > count {
257
+ f. write_str ( " /* … */\n " ) ?;
258
+ }
259
+ f. write_str ( "}" ) ?;
260
+ }
261
+
262
+ Ok ( ( ) )
263
+ }
264
+
265
+ fn display_variants (
266
+ variants : & [ Variant ] ,
267
+ has_where_clause : bool ,
268
+ limit : usize ,
269
+ f : & mut HirFormatter < ' _ > ,
270
+ ) -> Result < ( ) , HirDisplayError > {
271
+ let count = variants. len ( ) . min ( limit) ;
272
+ f. write_char ( if !has_where_clause { ' ' } else { '\n' } ) ?;
273
+ if count == 0 {
274
+ if variants. is_empty ( ) {
275
+ f. write_str ( "{}" ) ?;
276
+ } else {
277
+ f. write_str ( "{ /* … */ }" ) ?;
278
+ }
279
+ } else {
280
+ f. write_str ( "{\n " ) ?;
281
+ for variant in & variants[ ..count] {
282
+ f. write_str ( " " ) ?;
283
+ write ! ( f, "{}" , variant. name( f. db) . display( f. db. upcast( ) ) ) ?;
284
+ match variant. kind ( f. db ) {
285
+ StructKind :: Tuple => {
286
+ if variant. fields ( f. db ) . is_empty ( ) {
287
+ f. write_str ( "()" ) ?;
288
+ } else {
289
+ f. write_str ( "( /* … */ )" ) ?;
290
+ }
291
+ }
292
+ StructKind :: Record => {
293
+ if variant. fields ( f. db ) . is_empty ( ) {
294
+ f. write_str ( " {}" ) ?;
295
+ } else {
296
+ f. write_str ( " { /* … */ }" ) ?;
297
+ }
298
+ }
299
+ StructKind :: Unit => { }
300
+ }
301
+ f. write_str ( ",\n " ) ?;
302
+ }
303
+
304
+ if variants. len ( ) > count {
257
305
f. write_str ( " /* … */\n " ) ?;
258
306
}
259
307
f. write_str ( "}" ) ?;
0 commit comments