Include trailing comma in multiline Debug representation · rust-lang/rust@cfd31fb (original) (raw)
`@@ -11,7 +11,7 @@ impl<'a> PadAdapter<'a> {
`
11
11
` fmt.wrap_buf(move |buf| {
`
12
12
`*slot = Some(PadAdapter {
`
13
13
` buf,
`
14
``
`-
on_newline: false,
`
``
14
`+
on_newline: true,
`
15
15
`});
`
16
16
` slot.as_mut().unwrap()
`
17
17
`})
`
`@@ -128,22 +128,21 @@ impl<'a, 'b: 'a> DebugStruct<'a, 'b> {
`
128
128
`#[stable(feature = "debug_builders", since = "1.2.0")]
`
129
129
`pub fn field(&mut self, name: &str, value: &dyn fmt::Debug) -> &mut DebugStruct<'a, 'b> {
`
130
130
`self.result = self.result.and_then(|_| {
`
131
``
`-
let prefix = if self.has_fields {
`
132
``
`-
","
`
133
``
`-
} else {
`
134
``
`-
" {"
`
135
``
`-
};
`
136
``
-
137
131
`if self.is_pretty() {
`
``
132
`+
if !self.has_fields {
`
``
133
`+
self.fmt.write_str(" {\n")?;
`
``
134
`+
}
`
138
135
`let mut slot = None;
`
139
136
`let mut writer = PadAdapter::wrap(&mut self.fmt, &mut slot);
`
140
``
`-
writer.write_str(prefix)?;
`
141
``
`-
writer.write_str("\n")?;
`
142
137
` writer.write_str(name)?;
`
143
138
` writer.write_str(": ")?;
`
144
``
`-
value.fmt(&mut writer)
`
``
139
`+
value.fmt(&mut writer)?;
`
``
140
`+
writer.write_str(",\n")
`
145
141
`} else {
`
146
``
`-
write!(self.fmt, "{} {}: ", prefix, name)?;
`
``
142
`+
let prefix = if self.has_fields { ", " } else { " { " };
`
``
143
`+
self.fmt.write_str(prefix)?;
`
``
144
`+
self.fmt.write_str(name)?;
`
``
145
`+
self.fmt.write_str(": ")?;
`
147
146
` value.fmt(self.fmt)
`
148
147
`}
`
149
148
`});
`
`@@ -184,7 +183,7 @@ impl<'a, 'b: 'a> DebugStruct<'a, 'b> {
`
184
183
`if self.has_fields {
`
185
184
`self.result = self.result.and_then(|_| {
`
186
185
`if self.is_pretty() {
`
187
``
`-
self.fmt.write_str("\n}")
`
``
186
`+
self.fmt.write_str("}")
`
188
187
`} else {
`
189
188
`self.fmt.write_str(" }")
`
190
189
`}
`
`@@ -275,21 +274,17 @@ impl<'a, 'b: 'a> DebugTuple<'a, 'b> {
`
275
274
`#[stable(feature = "debug_builders", since = "1.2.0")]
`
276
275
`pub fn field(&mut self, value: &dyn fmt::Debug) -> &mut DebugTuple<'a, 'b> {
`
277
276
`self.result = self.result.and_then(|_| {
`
278
``
`-
let (prefix, space) = if self.fields > 0 {
`
279
``
`-
(",", " ")
`
280
``
`-
} else {
`
281
``
`-
("(", "")
`
282
``
`-
};
`
283
``
-
284
277
`if self.is_pretty() {
`
``
278
`+
if self.fields == 0 {
`
``
279
`+
self.fmt.write_str("(\n")?;
`
``
280
`+
}
`
285
281
`let mut slot = None;
`
286
282
`let mut writer = PadAdapter::wrap(&mut self.fmt, &mut slot);
`
287
``
`-
writer.write_str(prefix)?;
`
288
``
`-
writer.write_str("\n")?;
`
289
``
`-
value.fmt(&mut writer)
`
``
283
`+
value.fmt(&mut writer)?;
`
``
284
`+
writer.write_str(",\n")
`
290
285
`} else {
`
``
286
`+
let prefix = if self.fields == 0 { "(" } else { ", " };
`
291
287
`self.fmt.write_str(prefix)?;
`
292
``
`-
self.fmt.write_str(space)?;
`
293
288
` value.fmt(self.fmt)
`
294
289
`}
`
295
290
`});
`
`@@ -326,10 +321,7 @@ impl<'a, 'b: 'a> DebugTuple<'a, 'b> {
`
326
321
`pub fn finish(&mut self) -> fmt::Result {
`
327
322
`if self.fields > 0 {
`
328
323
`self.result = self.result.and_then(|_| {
`
329
``
`-
if self.is_pretty() {
`
330
``
`-
self.fmt.write_str("\n")?;
`
331
``
`-
}
`
332
``
`-
if self.fields == 1 && self.empty_name {
`
``
324
`+
if self.fields == 1 && self.empty_name && !self.is_pretty() {
`
333
325
`self.fmt.write_str(",")?;
`
334
326
`}
`
335
327
`self.fmt.write_str(")")
`
`@@ -353,14 +345,13 @@ impl<'a, 'b: 'a> DebugInner<'a, 'b> {
`
353
345
`fn entry(&mut self, entry: &dyn fmt::Debug) {
`
354
346
`self.result = self.result.and_then(|_| {
`
355
347
`if self.is_pretty() {
`
``
348
`+
if !self.has_fields {
`
``
349
`+
self.fmt.write_str("\n")?;
`
``
350
`+
}
`
356
351
`let mut slot = None;
`
357
352
`let mut writer = PadAdapter::wrap(&mut self.fmt, &mut slot);
`
358
``
`-
writer.write_str(if self.has_fields {
`
359
``
`-
",\n"
`
360
``
`-
} else {
`
361
``
`-
"\n"
`
362
``
`-
})?;
`
363
``
`-
entry.fmt(&mut writer)
`
``
353
`+
entry.fmt(&mut writer)?;
`
``
354
`+
writer.write_str(",\n")
`
364
355
`} else {
`
365
356
`if self.has_fields {
`
366
357
`self.fmt.write_str(", ")?
`
`@@ -372,15 +363,6 @@ impl<'a, 'b: 'a> DebugInner<'a, 'b> {
`
372
363
`self.has_fields = true;
`
373
364
`}
`
374
365
``
375
``
`-
pub fn finish(&mut self) {
`
376
``
`-
let prefix = if self.is_pretty() && self.has_fields {
`
377
``
`-
"\n"
`
378
``
`-
} else {
`
379
``
`-
""
`
380
``
`-
};
`
381
``
`-
self.result = self.result.and_then(|_| self.fmt.write_str(prefix));
`
382
``
`-
}
`
383
``
-
384
366
`fn is_pretty(&self) -> bool {
`
385
367
`self.fmt.alternate()
`
386
368
`}
`
`@@ -421,7 +403,7 @@ pub struct DebugSet<'a, 'b: 'a> {
`
421
403
`}
`
422
404
``
423
405
`pub fn debug_set_new<'a, 'b>(fmt: &'a mut fmt::Formatter<'b>) -> DebugSet<'a, 'b> {
`
424
``
`-
let result = write!(fmt, "{{");
`
``
406
`+
let result = fmt.write_str("{");
`
425
407
`DebugSet {
`
426
408
`inner: DebugInner {
`
427
409
` fmt,
`
`@@ -519,7 +501,6 @@ impl<'a, 'b: 'a> DebugSet<'a, 'b> {
`
519
501
```` /// ```
`520`
`502`
`#[stable(feature = "debug_builders", since = "1.2.0")]
`
`521`
`503`
`pub fn finish(&mut self) -> fmt::Result {
`
`522`
``
`-
self.inner.finish();
`
`523`
`504`
`self.inner.result.and_then(|_| self.inner.fmt.write_str("}"))
`
`524`
`505`
`}
`
`525`
`506`
`}
`
`@@ -559,7 +540,7 @@ pub struct DebugList<'a, 'b: 'a> {
`
`559`
`540`
`}
`
`560`
`541`
``
`561`
`542`
`pub fn debug_list_new<'a, 'b>(fmt: &'a mut fmt::Formatter<'b>) -> DebugList<'a, 'b> {
`
`562`
``
`-
let result = write!(fmt, "[");
`
``
`543`
`+
let result = fmt.write_str("[");
`
`563`
`544`
`DebugList {
`
`564`
`545`
`inner: DebugInner {
`
`565`
`546`
` fmt,
`
`@@ -657,7 +638,6 @@ impl<'a, 'b: 'a> DebugList<'a, 'b> {
`
`657`
`638`
```` /// ```
658
639
`#[stable(feature = "debug_builders", since = "1.2.0")]
`
659
640
`pub fn finish(&mut self) -> fmt::Result {
`
660
``
`-
self.inner.finish();
`
661
641
`self.inner.result.and_then(|_| self.inner.fmt.write_str("]"))
`
662
642
`}
`
663
643
`}
`
`@@ -699,7 +679,7 @@ pub struct DebugMap<'a, 'b: 'a> {
`
699
679
`}
`
700
680
``
701
681
`pub fn debug_map_new<'a, 'b>(fmt: &'a mut fmt::Formatter<'b>) -> DebugMap<'a, 'b> {
`
702
``
`-
let result = write!(fmt, "{{");
`
``
682
`+
let result = fmt.write_str("{");
`
703
683
`DebugMap {
`
704
684
` fmt,
`
705
685
` result,
`
`@@ -734,16 +714,15 @@ impl<'a, 'b: 'a> DebugMap<'a, 'b> {
`
734
714
`pub fn entry(&mut self, key: &dyn fmt::Debug, value: &dyn fmt::Debug) -> &mut DebugMap<'a, 'b> {
`
735
715
`self.result = self.result.and_then(|_| {
`
736
716
`if self.is_pretty() {
`
``
717
`+
if !self.has_fields {
`
``
718
`+
self.fmt.write_str("\n")?;
`
``
719
`+
}
`
737
720
`let mut slot = None;
`
738
721
`let mut writer = PadAdapter::wrap(&mut self.fmt, &mut slot);
`
739
``
`-
writer.write_str(if self.has_fields {
`
740
``
`-
",\n"
`
741
``
`-
} else {
`
742
``
`-
"\n"
`
743
``
`-
})?;
`
744
722
` key.fmt(&mut writer)?;
`
745
723
` writer.write_str(": ")?;
`
746
``
`-
value.fmt(&mut writer)
`
``
724
`+
value.fmt(&mut writer)?;
`
``
725
`+
writer.write_str(",\n")
`
747
726
`} else {
`
748
727
`if self.has_fields {
`
749
728
`self.fmt.write_str(", ")?
`
`@@ -818,12 +797,7 @@ impl<'a, 'b: 'a> DebugMap<'a, 'b> {
`
818
797
```` /// ```
````
819
798
`#[stable(feature = "debug_builders", since = "1.2.0")]
`
820
799
`pub fn finish(&mut self) -> fmt::Result {
`
821
``
`-
let prefix = if self.is_pretty() && self.has_fields {
`
822
``
`-
"\n"
`
823
``
`-
} else {
`
824
``
`-
""
`
825
``
`-
};
`
826
``
`-
self.result.and_then(|_| write!(self.fmt, "{}}}", prefix))
`
``
800
`+
self.result.and_then(|_| self.fmt.write_str("}"))
`
827
801
`}
`
828
802
``
829
803
`fn is_pretty(&self) -> bool {
`