From b0ab164b80f8d559cfc96e1d1d3819993672cced Mon Sep 17 00:00:00 2001 From: Steven Fackler Date: Fri, 10 Jul 2015 11:03:52 -0800 Subject: [PATCH] Add trailing , for 1-tuples --- src/libcore/fmt/builders.rs | 6 ++++++ src/libcore/fmt/mod.rs | 11 ++++++++++- src/libcoretest/tuple.rs | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/libcore/fmt/builders.rs b/src/libcore/fmt/builders.rs index 32d6aa19c64..22f0215f0ad 100644 --- a/src/libcore/fmt/builders.rs +++ b/src/libcore/fmt/builders.rs @@ -175,6 +175,12 @@ impl<'a, 'b: 'a> DebugTuple<'a, 'b> { fn is_pretty(&self) -> bool { self.fmt.flags() & (1 << (FlagV1::Alternate as usize)) != 0 } + + /// Returns the wrapped `Formatter`. + #[unstable(feature = "debug_builder_formatter", reason = "recently added")] + pub fn formatter(&mut self) -> &mut fmt::Formatter<'b> { + &mut self.fmt + } } struct DebugInner<'a, 'b: 'a> { diff --git a/src/libcore/fmt/mod.rs b/src/libcore/fmt/mod.rs index 2a25db101c7..29a2f76ef29 100644 --- a/src/libcore/fmt/mod.rs +++ b/src/libcore/fmt/mod.rs @@ -1490,7 +1490,16 @@ macro_rules! tuple { fn fmt(&self, f: &mut Formatter) -> Result { let mut builder = f.debug_tuple(""); let ($(ref $name,)*) = *self; - $(builder.field($name);)* + let mut n = 0; + $( + builder.field($name); + n += 1; + )* + + if n == 1 { + try!(write!(builder.formatter(), ",")); + } + builder.finish() } } diff --git a/src/libcoretest/tuple.rs b/src/libcoretest/tuple.rs index a9624b03707..4fe5e0a740b 100644 --- a/src/libcoretest/tuple.rs +++ b/src/libcoretest/tuple.rs @@ -60,7 +60,7 @@ fn test_tuple_cmp() { #[test] fn test_show() { let s = format!("{:?}", (1,)); - assert_eq!(s, "(1)"); + assert_eq!(s, "(1,)"); let s = format!("{:?}", (1, true)); assert_eq!(s, "(1, true)"); let s = format!("{:?}", (1, "hi", true));