Skip to content

Commit d9f4f28

Browse files
committed
fix expected output
1 parent 4d1aee2 commit d9f4f28

2 files changed

Lines changed: 89 additions & 0 deletions

File tree

‎tests/unit/out/refcount/elidable_iterator_copy_cxx11.rs‎

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,63 @@ fn main_0() -> i32 {
3131
}));
3232
assert!((*it.borrow()) != RandomAccessIterator::Vec((v.as_pointer() as Ptr<i32>).to_end()));
3333
assert!((((*it.borrow()).iter_deref().read()) == 7));
34+
{
35+
let count = Rc::new(RefCell::new(RandomAccessIterator::Vec(
36+
(v.as_pointer() as Ptr<i32>).to_end(),
37+
)))
38+
.as_pointer()
39+
.get_offset()
40+
- Rc::new(RefCell::new(RandomAccessIterator::Vec(
41+
(v.as_pointer() as Ptr<i32>),
42+
)))
43+
.as_pointer()
44+
.get_offset();
45+
let random = std::hash::RandomState::new();
46+
for i in (1..count).rev() {
47+
let j = std::hash::BuildHasher::hash_one(&random, i) as usize % (i + 1);
48+
let x = Rc::new(RefCell::new(RandomAccessIterator::Vec(
49+
(v.as_pointer() as Ptr<i32>),
50+
)))
51+
.as_pointer()
52+
.offset(i);
53+
let y = Rc::new(RefCell::new(RandomAccessIterator::Vec(
54+
(v.as_pointer() as Ptr<i32>),
55+
)))
56+
.as_pointer()
57+
.offset(j);
58+
let tmp = x.read();
59+
x.write(y.read());
60+
y.write(tmp);
61+
}
62+
};
63+
{
64+
let __n = RandomAccessIterator::Vec((v.as_pointer() as Ptr<i32>).to_end())
65+
.iter_distance(&RandomAccessIterator::Vec((v.as_pointer() as Ptr<i32>)));
66+
let mut __order: Vec<isize> = (0..__n).collect();
67+
__order.sort_by(|&__x, &__y| {
68+
RandomAccessIterator::Vec((v.as_pointer() as Ptr<i32>))
69+
.iter_at(__x)
70+
.with(|__a| {
71+
RandomAccessIterator::Vec((v.as_pointer() as Ptr<i32>))
72+
.iter_at(__y)
73+
.with(|__b| __a.cmp(__b))
74+
})
75+
});
76+
let __values: Vec<_> = __order
77+
.iter()
78+
.map(|&__i| {
79+
RandomAccessIterator::Vec((v.as_pointer() as Ptr<i32>))
80+
.iter_at(__i)
81+
.read()
82+
})
83+
.collect();
84+
for (__i, __v) in (0..__n).zip(__values) {
85+
RandomAccessIterator::Vec((v.as_pointer() as Ptr<i32>))
86+
.iter_at(__i)
87+
.write(__v);
88+
}
89+
};
90+
assert!(({ (*v.borrow())[0_usize] } == 4) && ({ (*v.borrow())[1_usize] } == 7));
3491
return 0;
3592
}
3693
pub fn __cpp2rust_init_globals() {}

‎tests/unit/out/unsafe/elidable_iterator_copy_cxx11.rs‎

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,38 @@ unsafe fn main_0() -> i32 {
3333
};
3434
assert!(it != UnsafeRandomAccessIterator::Vec(v.as_mut_ptr().add(v.len())));
3535
assert!(((*it.iter_deref()) == (7)));
36+
{
37+
let len = UnsafeRandomAccessIterator::Vec(v.as_mut_ptr().add(v.len()))
38+
.offset_from(UnsafeRandomAccessIterator::Vec(v.as_mut_ptr()))
39+
as usize;
40+
let slice =
41+
::std::slice::from_raw_parts_mut(UnsafeRandomAccessIterator::Vec(v.as_mut_ptr()), len);
42+
for i in (1..len).rev() {
43+
slice.swap(i, libc::rand() as usize % (i + 1));
44+
}
45+
};
46+
{
47+
let __n = UnsafeRandomAccessIterator::Vec(v.as_mut_ptr().add(v.len()))
48+
.iter_distance(&UnsafeRandomAccessIterator::Vec(v.as_mut_ptr()));
49+
let mut __order: Vec<isize> = (0..__n).collect();
50+
__order.sort_by(|&__x, &__y| {
51+
(*UnsafeRandomAccessIterator::Vec(v.as_mut_ptr()).iter_at(__x))
52+
.cmp(&*UnsafeRandomAccessIterator::Vec(v.as_mut_ptr()).iter_at(__y))
53+
});
54+
let __values: Vec<_> = __order
55+
.iter()
56+
.map(|&__i| {
57+
std::ptr::read(UnsafeRandomAccessIterator::Vec(v.as_mut_ptr()).iter_at(__i))
58+
})
59+
.collect();
60+
for (__i, __v) in (0..__n).zip(__values) {
61+
std::ptr::write(
62+
UnsafeRandomAccessIterator::Vec(v.as_mut_ptr()).iter_at(__i),
63+
__v,
64+
);
65+
}
66+
};
67+
assert!(((v[(0_usize)]) == (4)) && ((v[(1_usize)]) == (7)));
3668
return 0;
3769
}
3870
pub unsafe fn __cpp2rust_init_globals() {}

0 commit comments

Comments
 (0)