diff --git a/library/alloc/src/collections/btree/map/tests.rs b/library/alloc/src/collections/btree/map/tests.rs index 17389657afb92..c95aeeaa60558 100644 --- a/library/alloc/src/collections/btree/map/tests.rs +++ b/library/alloc/src/collections/btree/map/tests.rs @@ -1556,7 +1556,7 @@ fn test_clone_from() { } #[allow(dead_code)] -fn test_variance() { +fn assert_covariance() { fn map_key<'new>(v: BTreeMap<&'static str, ()>) -> BTreeMap<&'new str, ()> { v } @@ -1615,7 +1615,7 @@ fn test_variance() { } #[allow(dead_code)] -fn test_sync() { +fn assert_sync() { fn map(v: &BTreeMap) -> impl Sync + '_ { v } @@ -1684,7 +1684,7 @@ fn test_sync() { } #[allow(dead_code)] -fn test_send() { +fn assert_send() { fn map(v: BTreeMap) -> impl Send { v } diff --git a/library/alloc/src/collections/btree/set/tests.rs b/library/alloc/src/collections/btree/set/tests.rs index 2fc17a7c8603f..7390ff5a59c8c 100644 --- a/library/alloc/src/collections/btree/set/tests.rs +++ b/library/alloc/src/collections/btree/set/tests.rs @@ -3,6 +3,7 @@ use super::super::testing::rng::DeterministicRng; use super::*; use crate::vec::Vec; use std::cmp::Ordering; +use std::hash::{Hash, Hasher}; use std::iter::FromIterator; use std::panic::{catch_unwind, AssertUnwindSafe}; @@ -513,7 +514,7 @@ fn test_recovery() { } #[allow(dead_code)] -fn test_variance() { +fn assert_covariance() { fn set<'new>(v: BTreeSet<&'static str>) -> BTreeSet<&'new str> { v } @@ -530,7 +531,7 @@ fn test_variance() { } #[allow(dead_code)] -fn test_sync() { +fn assert_sync() { fn set(v: &BTreeSet) -> impl Sync + '_ { v } @@ -569,7 +570,7 @@ fn test_sync() { } #[allow(dead_code)] -fn test_send() { +fn assert_send() { fn set(v: BTreeSet) -> impl Send { v } @@ -607,6 +608,37 @@ fn test_send() { } } +#[allow(dead_code)] +// Check that the member-like functions conditionally provided by #[derive()] +// are not overriden by genuine member functions with a different signature. +fn assert_derives() { + fn hash(v: BTreeSet, state: &mut H) { + v.hash(state); + // Tested much more thoroughly outside the crate in btree_set_hash.rs + } + fn eq(v: BTreeSet) { + let _ = v.eq(&v); + } + fn ne(v: BTreeSet) { + let _ = v.ne(&v); + } + fn cmp(v: BTreeSet) { + let _ = v.cmp(&v); + } + fn min(v: BTreeSet, w: BTreeSet) { + let _ = v.min(w); + } + fn max(v: BTreeSet, w: BTreeSet) { + let _ = v.max(w); + } + fn clamp(v: BTreeSet, w: BTreeSet, x: BTreeSet) { + let _ = v.clamp(w, x); + } + fn partial_cmp(v: &BTreeSet) { + let _ = v.partial_cmp(&v); + } +} + #[test] fn test_ord_absence() { fn set(mut set: BTreeSet) {