From 9a6b611a07f58bfd0ac1a26d1b25274202356d4a Mon Sep 17 00:00:00 2001 From: Peter Atashian Date: Thu, 18 Jun 2015 22:16:46 -0400 Subject: Custom Debug impl for io::Error Fixes #26408 Signed-off-by: Peter Atashian --- src/libstd/io/error.rs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src/libstd') diff --git a/src/libstd/io/error.rs b/src/libstd/io/error.rs index b43ac0daf51..1976c77a1e4 100644 --- a/src/libstd/io/error.rs +++ b/src/libstd/io/error.rs @@ -37,7 +37,6 @@ pub struct Error { repr: Repr, } -#[derive(Debug)] enum Repr { Os(i32), Custom(Box), @@ -240,6 +239,17 @@ impl Error { } } +impl fmt::Debug for Repr { + fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { + match self { + &Repr::Os(ref code) => + fmt.debug_struct("Os").field("code", code) + .field("message", &sys::os::error_string(*code)).finish(), + &Repr::Custom(ref c) => fmt.debug_tuple("Custom").field(c).finish(), + } + } +} + #[stable(feature = "rust1", since = "1.0.0")] impl fmt::Display for Error { fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { -- cgit 1.4.1-3-g733a5 From c8aec53db73182f453621c284131ef028d0ae064 Mon Sep 17 00:00:00 2001 From: Peter Atashian Date: Fri, 19 Jun 2015 12:55:59 -0400 Subject: Add a test for Debug for io::Error Signed-off-by: Peter Atashian --- src/libstd/io/error.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/libstd') diff --git a/src/libstd/io/error.rs b/src/libstd/io/error.rs index 1976c77a1e4..a66789bf287 100644 --- a/src/libstd/io/error.rs +++ b/src/libstd/io/error.rs @@ -292,6 +292,16 @@ mod test { use error; use error::Error as error_Error; use fmt; + use sys::os::error_string; + + #[test] + fn test_debug_error() { + let code = 6; + let msg = error_string(code); + let err = Error { repr: super::Repr::Os(code) }; + let expected = format!("Error {{ repr: Os {{ code: {:?}, message: {:?} }} }}", code, msg); + assert_eq!(format!("{:?}", err), expected); + } #[test] fn test_downcasting() { -- cgit 1.4.1-3-g733a5