summaryrefslogtreecommitdiffstats
path: root/src/test/ui/specialization/soundness
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:13 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:13 +0000
commit218caa410aa38c29984be31a5229b9fa717560ee (patch)
treec54bd55eeb6e4c508940a30e94c0032fbd45d677 /src/test/ui/specialization/soundness
parentReleasing progress-linux version 1.67.1+dfsg1-1~progress7.99u1. (diff)
downloadrustc-218caa410aa38c29984be31a5229b9fa717560ee.tar.xz
rustc-218caa410aa38c29984be31a5229b9fa717560ee.zip
Merging upstream version 1.68.2+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/test/ui/specialization/soundness')
-rw-r--r--src/test/ui/specialization/soundness/partial_eq_range_inclusive.rs35
-rw-r--r--src/test/ui/specialization/soundness/partial_ord_slice.rs42
2 files changed, 0 insertions, 77 deletions
diff --git a/src/test/ui/specialization/soundness/partial_eq_range_inclusive.rs b/src/test/ui/specialization/soundness/partial_eq_range_inclusive.rs
deleted file mode 100644
index 923dec892..000000000
--- a/src/test/ui/specialization/soundness/partial_eq_range_inclusive.rs
+++ /dev/null
@@ -1,35 +0,0 @@
-// run-pass
-
-use std::cell::RefCell;
-use std::cmp::Ordering;
-
-struct Evil<'a, 'b> {
- values: RefCell<Vec<&'a str>>,
- to_insert: &'b String,
-}
-
-impl<'a, 'b> PartialEq for Evil<'a, 'b> {
- fn eq(&self, _other: &Self) -> bool {
- true
- }
-}
-
-impl<'a> PartialOrd for Evil<'a, 'a> {
- fn partial_cmp(&self, _other: &Self) -> Option<Ordering> {
- self.values.borrow_mut().push(self.to_insert);
- None
- }
-}
-
-fn main() {
- let e;
- let values;
- {
- let to_insert = String::from("Hello, world!");
- e = Evil { values: RefCell::new(Vec::new()), to_insert: &to_insert };
- let range = &e..=&e;
- let _ = range == range;
- values = e.values;
- }
- assert_eq!(*values.borrow(), Vec::<&str>::new());
-}
diff --git a/src/test/ui/specialization/soundness/partial_ord_slice.rs b/src/test/ui/specialization/soundness/partial_ord_slice.rs
deleted file mode 100644
index b9e80a48d..000000000
--- a/src/test/ui/specialization/soundness/partial_ord_slice.rs
+++ /dev/null
@@ -1,42 +0,0 @@
-// Check that we aren't using unsound specialization in slice comparisons.
-
-// run-pass
-
-use std::cell::Cell;
-use std::cmp::Ordering;
-
-struct Evil<'a, 'b>(Cell<(&'a [i32], &'b [i32])>);
-
-impl PartialEq for Evil<'_, '_> {
- fn eq(&self, _other: &Self) -> bool {
- true
- }
-}
-
-impl Eq for Evil<'_, '_> {}
-
-impl PartialOrd for Evil<'_, '_> {
- fn partial_cmp(&self, _other: &Self) -> Option<Ordering> {
- Some(Ordering::Equal)
- }
-}
-
-impl<'a> Ord for Evil<'a, 'a> {
- fn cmp(&self, _other: &Self) -> Ordering {
- let (a, b) = self.0.get();
- self.0.set((b, a));
- Ordering::Equal
- }
-}
-
-fn main() {
- let x = &[1, 2, 3, 4];
- let u = {
- let a = Box::new([7, 8, 9, 10]);
- let y = [Evil(Cell::new((x, &*a)))];
- let _ = &y[..] <= &y[..];
- let [Evil(c)] = y;
- c.get().0
- };
- assert_eq!(u, &[1, 2, 3, 4]);
-}