From d5dded9916a028d3e1a7cd6ef111c4ffbf7e40d2 Mon Sep 17 00:00:00 2001 From: Bryant Mairs Date: Wed, 23 Jan 2019 07:18:32 -0800 Subject: [PATCH] Check for Debug impls for all types This was not compile-tested on all platforms, but instead all `pub enum` types had a `Debug` impl derived for them. --- src/cloudabi/mod.rs | 2 ++ src/fuchsia/mod.rs | 6 ++++++ src/lib.rs | 2 ++ src/redox/mod.rs | 2 ++ src/unix/bsd/apple/mod.rs | 1 + src/unix/bsd/freebsdlike/dragonfly/mod.rs | 1 + src/unix/bsd/freebsdlike/mod.rs | 1 + src/unix/bsd/netbsdlike/mod.rs | 2 ++ src/unix/haiku/mod.rs | 1 + src/unix/mod.rs | 4 ++++ src/unix/notbsd/android/mod.rs | 8 ++++---- src/unix/notbsd/emscripten.rs | 1 + src/unix/notbsd/linux/mod.rs | 1 + src/unix/notbsd/mod.rs | 1 + src/unix/solaris/mod.rs | 1 + src/unix/uclibc/mod.rs | 2 ++ src/windows/mod.rs | 5 ++++- 17 files changed, 36 insertions(+), 5 deletions(-) diff --git a/src/cloudabi/mod.rs b/src/cloudabi/mod.rs index df11de002ec62..520ed8deee437 100644 --- a/src/cloudabi/mod.rs +++ b/src/cloudabi/mod.rs @@ -122,7 +122,9 @@ pub const PTHREAD_STACK_MIN: ::size_t = 1024; pub const SOCK_DGRAM: ::c_int = 128; pub const SOCK_STREAM: ::c_int = 130; +#[cfg_attr(feature = "extra_traits", derive(Debug))] pub enum FILE {} +#[cfg_attr(feature = "extra_traits", derive(Debug))] pub enum fpos_t {} // TODO: fill this out with a struct extern { diff --git a/src/fuchsia/mod.rs b/src/fuchsia/mod.rs index e785fabf8eae5..351ec7e37d801 100644 --- a/src/fuchsia/mod.rs +++ b/src/fuchsia/mod.rs @@ -100,9 +100,13 @@ pub type c_ulong = u64; // FIXME: why are these uninhabited types? that seems... wrong? // Presumably these should be `()` or an `extern type` (when that stabilizes). +#[cfg_attr(feature = "extra_traits", derive(Debug))] pub enum timezone {} +#[cfg_attr(feature = "extra_traits", derive(Debug))] pub enum DIR {} +#[cfg_attr(feature = "extra_traits", derive(Debug))] pub enum locale_t {} +#[cfg_attr(feature = "extra_traits", derive(Debug))] pub enum fpos64_t {} // TODO: fill this out with a struct // PUB_STRUCT @@ -3042,7 +3046,9 @@ f! { #[link(name = "fdio")] extern {} +#[cfg_attr(feature = "extra_traits", derive(Debug))] pub enum FILE {} +#[cfg_attr(feature = "extra_traits", derive(Debug))] pub enum fpos_t {} // TODO: fill this out with a struct extern { diff --git a/src/lib.rs b/src/lib.rs index 03e78041ab617..86ab9b1368ace 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -156,6 +156,8 @@ #![cfg_attr(feature = "rustc-dep-of-std", no_core)] #![cfg_attr(feature = "rustc-dep-of-std", allow(warnings))] #![cfg_attr(not(any(feature = "use_std", feature = "rustc-dep-of-std")), no_std)] +// Enable lints +#![cfg_attr(feature = "extra_traits", deny(missing_debug_implementations))] #[cfg(all(not(cross_platform_docs), feature = "use_std"))] extern crate std as core; diff --git a/src/redox/mod.rs b/src/redox/mod.rs index 8dabd9063e169..cfe7fd613b027 100644 --- a/src/redox/mod.rs +++ b/src/redox/mod.rs @@ -219,7 +219,9 @@ pub const SIGIO: ::c_int = 29; pub const SIGPWR: ::c_int = 30; pub const SIGSYS: ::c_int = 31; +#[cfg_attr(feature = "extra_traits", derive(Debug))] pub enum FILE {} +#[cfg_attr(feature = "extra_traits", derive(Debug))] pub enum fpos_t {} // TODO: fill this out with a struct // intentionally not public, only used for fd_set diff --git a/src/unix/bsd/apple/mod.rs b/src/unix/bsd/apple/mod.rs index 08995917d4331..bb48d22709f91 100644 --- a/src/unix/bsd/apple/mod.rs +++ b/src/unix/bsd/apple/mod.rs @@ -34,6 +34,7 @@ pub type posix_spawn_file_actions_t = *mut ::c_void; pub type key_t = ::c_int; pub type shmatt_t = ::c_ushort; +#[cfg_attr(feature = "extra_traits", derive(Debug))] pub enum timezone {} s! { diff --git a/src/unix/bsd/freebsdlike/dragonfly/mod.rs b/src/unix/bsd/freebsdlike/dragonfly/mod.rs index 992d0082e4919..75afeb28fd57b 100644 --- a/src/unix/bsd/freebsdlike/dragonfly/mod.rs +++ b/src/unix/bsd/freebsdlike/dragonfly/mod.rs @@ -17,6 +17,7 @@ pub type fsfilcnt_t = u64; pub type sem_t = *mut sem; +#[cfg_attr(feature = "extra_traits", derive(Debug))] pub enum sem {} s! { diff --git a/src/unix/bsd/freebsdlike/mod.rs b/src/unix/bsd/freebsdlike/mod.rs index 22c11b3698a32..a402269a4785f 100644 --- a/src/unix/bsd/freebsdlike/mod.rs +++ b/src/unix/bsd/freebsdlike/mod.rs @@ -16,6 +16,7 @@ pub type speed_t = ::c_uint; pub type nl_item = ::c_int; pub type id_t = i64; +#[cfg_attr(feature = "extra_traits", derive(Debug))] pub enum timezone {} s! { diff --git a/src/unix/bsd/netbsdlike/mod.rs b/src/unix/bsd/netbsdlike/mod.rs index 291c081b97bc7..dfe20518363ec 100644 --- a/src/unix/bsd/netbsdlike/mod.rs +++ b/src/unix/bsd/netbsdlike/mod.rs @@ -13,7 +13,9 @@ pub type clockid_t = ::c_int; pub type id_t = ::uint32_t; pub type sem_t = *mut sem; +#[cfg_attr(feature = "extra_traits", derive(Debug))] pub enum timezone {} +#[cfg_attr(feature = "extra_traits", derive(Debug))] pub enum sem {} s! { diff --git a/src/unix/haiku/mod.rs b/src/unix/haiku/mod.rs index 2aa5d13a67381..a7fdffdc42daf 100644 --- a/src/unix/haiku/mod.rs +++ b/src/unix/haiku/mod.rs @@ -31,6 +31,7 @@ pub type nl_item = ::c_int; pub type id_t = i32; pub type idtype_t = ::c_uint; +#[cfg_attr(feature = "extra_traits", derive(Debug))] pub enum timezone {} s! { diff --git a/src/unix/mod.rs b/src/unix/mod.rs index 88e13c58c7706..bcd16f83ef608 100644 --- a/src/unix/mod.rs +++ b/src/unix/mod.rs @@ -41,7 +41,9 @@ pub type in_port_t = u16; pub type sighandler_t = ::size_t; pub type cc_t = ::c_uchar; +#[cfg_attr(feature = "extra_traits", derive(Debug))] pub enum DIR {} +#[cfg_attr(feature = "extra_traits", derive(Debug))] pub enum locale_t {} s! { @@ -365,7 +367,9 @@ cfg_if! { } } +#[cfg_attr(feature = "extra_traits", derive(Debug))] pub enum FILE {} +#[cfg_attr(feature = "extra_traits", derive(Debug))] pub enum fpos_t {} // TODO: fill this out with a struct extern { diff --git a/src/unix/notbsd/android/mod.rs b/src/unix/notbsd/android/mod.rs index de4ff593a0ba7..0e2eebf056e39 100644 --- a/src/unix/notbsd/android/mod.rs +++ b/src/unix/notbsd/android/mod.rs @@ -264,7 +264,7 @@ impl std::fmt::Debug for dirent { .field("d_off", &self.d_off) .field("d_reclen", &self.d_reclen) .field("d_type", &self.d_type) - .field("d_name", &self.d_name) + // FIXME: .field("d_name", &self.d_name) .finish() } } @@ -302,7 +302,7 @@ impl std::fmt::Debug for dirent64 { .field("d_off", &self.d_off) .field("d_reclen", &self.d_reclen) .field("d_type", &self.d_type) - .field("d_name", &self.d_name) + // FIXME: .field("d_name", &self.d_name) .finish() } } @@ -374,7 +374,7 @@ impl std::fmt::Debug for lastlog { f.debug_struct("lastlog") .field("ll_time", &self.ll_time) .field("ll_line", &self.ll_line) - .field("ll_host", &self.ll_host) + // FIXME: .field("ll_host", &self.ll_host) .finish() } } @@ -425,7 +425,7 @@ impl std::fmt::Debug for utmp { .field("ut_line", &self.ut_line) .field("ut_id", &self.ut_id) .field("ut_user", &self.ut_user) - .field("ut_host", &self.ut_host) + // FIXME: .field("ut_host", &self.ut_host) .field("ut_exit", &self.ut_exit) .field("ut_session", &self.ut_session) .field("ut_tv", &self.ut_tv) diff --git a/src/unix/notbsd/emscripten.rs b/src/unix/notbsd/emscripten.rs index 28791d8fd5ac7..069631c1ff883 100644 --- a/src/unix/notbsd/emscripten.rs +++ b/src/unix/notbsd/emscripten.rs @@ -35,6 +35,7 @@ pub type c_long = i32; pub type c_ulong = u32; pub type nlink_t = u32; +#[cfg_attr(feature = "extra_traits", derive(Debug))] pub enum fpos64_t {} // TODO: fill this out with a struct s! { diff --git a/src/unix/notbsd/linux/mod.rs b/src/unix/notbsd/linux/mod.rs index 31fc37922a890..3150887ab0dad 100644 --- a/src/unix/notbsd/linux/mod.rs +++ b/src/unix/notbsd/linux/mod.rs @@ -38,6 +38,7 @@ pub type Elf64_Sxword = i64; pub type Elf32_Section = u16; pub type Elf64_Section = u16; +#[cfg_attr(feature = "extra_traits", derive(Debug))] pub enum fpos64_t {} // TODO: fill this out with a struct s! { diff --git a/src/unix/notbsd/mod.rs b/src/unix/notbsd/mod.rs index 4b06e6e6f6613..7913508455523 100644 --- a/src/unix/notbsd/mod.rs +++ b/src/unix/notbsd/mod.rs @@ -8,6 +8,7 @@ pub type clockid_t = ::c_int; pub type key_t = ::c_int; pub type id_t = ::c_uint; +#[cfg_attr(feature = "extra_traits", derive(Debug))] pub enum timezone {} s! { diff --git a/src/unix/solaris/mod.rs b/src/unix/solaris/mod.rs index c991e62045c31..c10f4c1844669 100644 --- a/src/unix/solaris/mod.rs +++ b/src/unix/solaris/mod.rs @@ -36,6 +36,7 @@ pub type nl_item = ::c_int; pub type id_t = ::c_int; pub type idtype_t = ::c_uint; +#[cfg_attr(feature = "extra_traits", derive(Debug))] pub enum timezone {} s! { diff --git a/src/unix/uclibc/mod.rs b/src/unix/uclibc/mod.rs index c04c22aad9f41..e0620048dca63 100644 --- a/src/unix/uclibc/mod.rs +++ b/src/unix/uclibc/mod.rs @@ -24,8 +24,10 @@ pub type nfds_t = ::c_ulong; pub type nl_item = ::c_int; pub type idtype_t = ::c_uint; +#[cfg_attr(feature = "extra_traits", derive(Debug))] pub enum fpos64_t {} // TODO: fill this out with a struct +#[cfg_attr(feature = "extra_traits", derive(Debug))] pub enum timezone {} s! { diff --git a/src/windows/mod.rs b/src/windows/mod.rs index 4bea45980b575..9deaf9b995293 100644 --- a/src/windows/mod.rs +++ b/src/windows/mod.rs @@ -47,6 +47,7 @@ cfg_if! { pub type off_t = i32; pub type dev_t = u32; pub type ino_t = u16; +#[cfg_attr(feature = "extra_traits", derive(Debug))] pub enum timezone {} pub type time64_t = i64; @@ -201,7 +202,9 @@ pub const SIG_ERR: ::c_int = -1; #[link(name = "libcmt", cfg(target_feature = "crt-static"))] extern {} +#[cfg_attr(feature = "extra_traits", derive(Debug))] pub enum FILE {} +#[cfg_attr(feature = "extra_traits", derive(Debug))] pub enum fpos_t {} // TODO: fill this out with a struct extern { @@ -446,4 +449,4 @@ cfg_if! { } else { // Unknown target_env } -} \ No newline at end of file +}