From 218caa410aa38c29984be31a5229b9fa717560ee Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 17 Apr 2024 14:19:13 +0200 Subject: Merging upstream version 1.68.2+dfsg1. Signed-off-by: Daniel Baumann --- src/test/ui/stdlib-unit-tests/raw-fat-ptr.rs | 119 --------------------------- 1 file changed, 119 deletions(-) delete mode 100644 src/test/ui/stdlib-unit-tests/raw-fat-ptr.rs (limited to 'src/test/ui/stdlib-unit-tests/raw-fat-ptr.rs') diff --git a/src/test/ui/stdlib-unit-tests/raw-fat-ptr.rs b/src/test/ui/stdlib-unit-tests/raw-fat-ptr.rs deleted file mode 100644 index 6b0b09c98..000000000 --- a/src/test/ui/stdlib-unit-tests/raw-fat-ptr.rs +++ /dev/null @@ -1,119 +0,0 @@ -// run-pass -// check raw fat pointer ops - -use std::mem; - -fn assert_inorder(a: &[T]) { - for i in 0..a.len() { - for j in 0..a.len() { - if i < j { - assert!(a[i] < a[j]); - assert!(a[i] <= a[j]); - assert!(!(a[i] == a[j])); - assert!(a[i] != a[j]); - assert!(!(a[i] >= a[j])); - assert!(!(a[i] > a[j])); - } else if i == j { - assert!(!(a[i] < a[j])); - assert!(a[i] <= a[j]); - assert!(a[i] == a[j]); - assert!(!(a[i] != a[j])); - assert!(a[i] >= a[j]); - assert!(!(a[i] > a[j])); - } else { - assert!(!(a[i] < a[j])); - assert!(!(a[i] <= a[j])); - assert!(!(a[i] == a[j])); - assert!(a[i] != a[j]); - assert!(a[i] >= a[j]); - assert!(a[i] > a[j]); - } - } - } -} - -trait Foo { fn foo(&self) -> usize; } -impl Foo for T { - fn foo(&self) -> usize { - mem::size_of::() - } -} - -#[allow(unused_tuple_struct_fields)] -struct S(u32, T); - -fn main() { - let mut array = [0,1,2,3,4]; - let mut array2 = [5,6,7,8,9]; - - // fat ptr comparison: addr then extra - - // check ordering for arrays - let mut ptrs: Vec<*const [u8]> = vec![ - &array[0..0], &array[0..1], &array, &array[1..] - ]; - - let array_addr = &array as *const [u8] as *const u8 as usize; - let array2_addr = &array2 as *const [u8] as *const u8 as usize; - if array2_addr < array_addr { - ptrs.insert(0, &array2); - } else { - ptrs.push(&array2); - } - assert_inorder(&ptrs); - - // check ordering for mut arrays - let mut ptrs: Vec<*mut [u8]> = vec![ - &mut array[0..0], &mut array[0..1], &mut array, &mut array[1..] - ]; - - let array_addr = &mut array as *mut [u8] as *mut u8 as usize; - let array2_addr = &mut array2 as *mut [u8] as *mut u8 as usize; - if array2_addr < array_addr { - ptrs.insert(0, &mut array2); - } else { - ptrs.push(&mut array2); - } - assert_inorder(&ptrs); - - let mut u8_ = (0u8, 1u8); - let mut u32_ = (4u32, 5u32); - - // check ordering for ptrs - let buf: &mut [*const dyn Foo] = &mut [ - &u8_, &u8_.0, - &u32_, &u32_.0, - ]; - buf.sort_by(|u,v| { - let u : [*const (); 2] = unsafe { mem::transmute(*u) }; - let v : [*const (); 2] = unsafe { mem::transmute(*v) }; - u.cmp(&v) - }); - assert_inorder(buf); - - // check ordering for mut ptrs - let buf: &mut [*mut dyn Foo] = &mut [ - &mut u8_, &mut u8_.0, - &mut u32_, &mut u32_.0, - ]; - buf.sort_by(|u,v| { - let u : [*const (); 2] = unsafe { mem::transmute(*u) }; - let v : [*const (); 2] = unsafe { mem::transmute(*v) }; - u.cmp(&v) - }); - assert_inorder(buf); - - // check ordering for structs containing arrays - let ss: (S<[u8; 2]>, - S<[u8; 3]>, - S<[u8; 2]>) = ( - S(7, [8, 9]), - S(10, [11, 12, 13]), - S(4, [5, 6]) - ); - assert_inorder(&[ - &ss.0 as *const S<[u8]>, - &ss.1 as *const S<[u8]>, - &ss.2 as *const S<[u8]> - ]); -} -- cgit v1.2.3