diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:19:13 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:19:13 +0000 |
commit | 218caa410aa38c29984be31a5229b9fa717560ee (patch) | |
tree | c54bd55eeb6e4c508940a30e94c0032fbd45d677 /src/test/ui/specialization/soundness | |
parent | Releasing progress-linux version 1.67.1+dfsg1-1~progress7.99u1. (diff) | |
download | rustc-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.rs | 35 | ||||
-rw-r--r-- | src/test/ui/specialization/soundness/partial_ord_slice.rs | 42 |
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]); -} |