From c8bc4b7a55606ae6d7b7af7c116c8188762b0871 Mon Sep 17 00:00:00 2001 From: Stein Somers Date: Fri, 10 Dec 2021 15:18:54 +0100 Subject: [PATCH 1/2] BTree: rename compile-time assertions to match library/alloc/tests --- library/alloc/src/collections/btree/map/tests.rs | 6 +++--- library/alloc/src/collections/btree/set/tests.rs | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) 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..9a5bfb3d95813 100644 --- a/library/alloc/src/collections/btree/set/tests.rs +++ b/library/alloc/src/collections/btree/set/tests.rs @@ -513,7 +513,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 +530,7 @@ fn test_variance() { } #[allow(dead_code)] -fn test_sync() { +fn assert_sync() { fn set(v: &BTreeSet) -> impl Sync + '_ { v } @@ -569,7 +569,7 @@ fn test_sync() { } #[allow(dead_code)] -fn test_send() { +fn assert_send() { fn set(v: BTreeSet) -> impl Send { v } From cc35a11a393c3fca47a3b80db48c39c416f20bf6 Mon Sep 17 00:00:00 2001 From: Stein Somers Date: Fri, 10 Dec 2021 15:18:54 +0100 Subject: [PATCH 2/2] BTree: assert presence of derived functions --- .../alloc/src/collections/btree/set/tests.rs | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/library/alloc/src/collections/btree/set/tests.rs b/library/alloc/src/collections/btree/set/tests.rs index 9a5bfb3d95813..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}; @@ -607,6 +608,37 @@ fn assert_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) {