Skip to content

Commit 53590d2

Browse files
committed
Add test where old PtrValueIter did not work
1 parent d74ba50 commit 53590d2

9 files changed

Lines changed: 176 additions & 26 deletions

‎rules/vector/tgt_refcount.rs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ fn f92<T1: TryFrom<T2>, T2: Clone + ByteRepr, T3: CppInputIterator<T2>>(a0: T3,
5555
let mut __v = Vec::new();
5656
let mut __it = a0;
5757
while __it != a1 {
58-
__v.push(T1::try_from(__it.iter_deref().read()).ok().unwrap());
58+
__v.push(<T1>::try_from(__it.iter_deref().read()).ok().unwrap());
5959
__it.iter_inc();
6060
}
6161
__v

‎rules/vector/tgt_unsafe.rs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ unsafe fn f92<T1: TryFrom<T2>, T2: Clone, T3: UnsafeCppInputIterator<T2>>(a0: T3
129129
let mut __v = Vec::new();
130130
let mut __it = a0;
131131
while __it != a1 {
132-
__v.push(T1::try_from((*__it.iter_deref()).clone()).ok().unwrap());
132+
__v.push(<T1>::try_from((*__it.iter_deref()).clone()).ok().unwrap());
133133
__it.iter_inc();
134134
}
135135
__v

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ pub fn push_local_from_field_1(mut jpg: Ptr<JPEGData>, mut cond: bool) {
5151
let mut __v = Vec::new();
5252
let mut __it = (head.as_pointer() as Ptr<u8>);
5353
while __it != (head.as_pointer() as Ptr<u8>).offset((3) as isize) {
54-
__v.push(u8::try_from(__it.iter_deref().read()).ok().unwrap());
54+
__v.push(<u8>::try_from(__it.iter_deref().read()).ok().unwrap());
5555
__it.iter_inc();
5656
}
5757
__v
@@ -82,7 +82,7 @@ pub fn emplace_local_from_field_4(mut jpg: Ptr<JPEGData>, mut cond: bool) {
8282
let mut __v = Vec::new();
8383
let mut __it = (head.as_pointer() as Ptr<u8>);
8484
while __it != (head.as_pointer() as Ptr<u8>).offset((3) as isize) {
85-
__v.push(u8::try_from(__it.iter_deref().read()).ok().unwrap());
85+
__v.push(<u8>::try_from(__it.iter_deref().read()).ok().unwrap());
8686
__it.iter_inc();
8787
}
8888
__v

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

Lines changed: 103 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ fn main_0() -> i32 {
1616
let mut __v = Vec::new();
1717
let mut __it = (src.as_pointer() as Ptr<u32>);
1818
while __it != (src.as_pointer() as Ptr<u32>).offset((3) as isize) {
19-
__v.push(u32::try_from(__it.iter_deref().read()).ok().unwrap());
19+
__v.push(<u32>::try_from(__it.iter_deref().read()).ok().unwrap());
2020
__it.iter_inc();
2121
}
2222
__v
@@ -27,7 +27,7 @@ fn main_0() -> i32 {
2727
let mut __v = Vec::new();
2828
let mut __it = (src.as_pointer() as Ptr<u32>);
2929
while __it != (src.as_pointer() as Ptr<u32>).offset((3) as isize) {
30-
__v.push(u64::try_from(__it.iter_deref().read()).ok().unwrap());
30+
__v.push(<u64>::try_from(__it.iter_deref().read()).ok().unwrap());
3131
__it.iter_inc();
3232
}
3333
__v
@@ -38,7 +38,7 @@ fn main_0() -> i32 {
3838
let mut __v = Vec::new();
3939
let mut __it = (src.as_pointer() as Ptr<u32>);
4040
while __it != (src.as_pointer() as Ptr<u32>).offset((3) as isize) {
41-
__v.push(i32::try_from(__it.iter_deref().read()).ok().unwrap());
41+
__v.push(<i32>::try_from(__it.iter_deref().read()).ok().unwrap());
4242
__it.iter_inc();
4343
}
4444
__v
@@ -50,7 +50,7 @@ fn main_0() -> i32 {
5050
let mut __v = Vec::new();
5151
let mut __it = (src1.as_pointer() as Ptr<u32>);
5252
while __it != (src1.as_pointer() as Ptr<u32>).to_end() {
53-
__v.push(u32::try_from(__it.iter_deref().read()).ok().unwrap());
53+
__v.push(<u32>::try_from(__it.iter_deref().read()).ok().unwrap());
5454
__it.iter_inc();
5555
}
5656
__v
@@ -65,13 +65,111 @@ fn main_0() -> i32 {
6565
let mut __v = Vec::new();
6666
let mut __it = (start).clone();
6767
while __it != start.offset((len) as isize) {
68-
__v.push(u8::try_from(__it.iter_deref().read()).ok().unwrap());
68+
__v.push(<u8>::try_from(__it.iter_deref().read()).ok().unwrap());
6969
__it.iter_inc();
7070
}
7171
__v
7272
};
7373
assert!((v5.len() == 5_usize));
7474
assert!(((v5[0_usize] as i32) == 10) && ((v5[4_usize] as i32) == 50));
75+
let m: Value<Map<i32, (Value<i32>, Value<i32>)>> = Rc::new(RefCell::new(Map::new()));
76+
(m.as_pointer() as Ptr<Map<i32, (Value<i32>, Value<i32>)>>)
77+
.with_mut(|__m: &mut Map<i32, (Value<i32>, Value<i32>)>| {
78+
__m.get_or_insert_with(1.clone(), || {
79+
(
80+
Rc::new(RefCell::new(1)),
81+
Rc::new(RefCell::new(<i32>::default())),
82+
)
83+
})
84+
.borrow()
85+
.1
86+
.as_pointer()
87+
})
88+
.write(10);
89+
(m.as_pointer() as Ptr<Map<i32, (Value<i32>, Value<i32>)>>)
90+
.with_mut(|__m: &mut Map<i32, (Value<i32>, Value<i32>)>| {
91+
__m.get_or_insert_with(2.clone(), || {
92+
(
93+
Rc::new(RefCell::new(2)),
94+
Rc::new(RefCell::new(<i32>::default())),
95+
)
96+
})
97+
.borrow()
98+
.1
99+
.as_pointer()
100+
})
101+
.write(20);
102+
(m.as_pointer() as Ptr<Map<i32, (Value<i32>, Value<i32>)>>)
103+
.with_mut(|__m: &mut Map<i32, (Value<i32>, Value<i32>)>| {
104+
__m.get_or_insert_with(3.clone(), || {
105+
(
106+
Rc::new(RefCell::new(3)),
107+
Rc::new(RefCell::new(<i32>::default())),
108+
)
109+
})
110+
.borrow()
111+
.1
112+
.as_pointer()
113+
})
114+
.write(30);
115+
let v6: Value<Vec<(Value<i32>, Value<i32>)>> = Rc::new(RefCell::new({
116+
let mut __v = Vec::new();
117+
let mut __it = (m.as_pointer() as Ptr<Map<i32, (Value<i32>, Value<i32>)>>)
118+
.with(|__m: &Map<i32, (Value<i32>, Value<i32>)>| __m.begin());
119+
while __it
120+
!= (m.as_pointer() as Ptr<Map<i32, (Value<i32>, Value<i32>)>>)
121+
.with(|__m: &Map<i32, (Value<i32>, Value<i32>)>| __m.end())
122+
{
123+
__v.push(
124+
<(Value<i32>, Value<i32>)>::try_from(__it.iter_deref().read())
125+
.ok()
126+
.unwrap(),
127+
);
128+
__it.iter_inc();
129+
}
130+
__v
131+
}));
132+
assert!(((*v6.borrow()).len() == 3_usize));
133+
assert!(
134+
((*(*v6.borrow())[0_usize].0.borrow()) == 1)
135+
&& ((*(*v6.borrow())[0_usize].1.borrow()) == 10)
136+
);
137+
assert!(
138+
((*(*v6.borrow())[2_usize].0.borrow()) == 3)
139+
&& ((*(*v6.borrow())[2_usize].1.borrow()) == 30)
140+
);
141+
{
142+
let start_idx = <RandomAccessIterator<(Value<i32>, Value<i32>)>>::from(
143+
RandomAccessIterator::Vec((v6.as_pointer() as Ptr<(Value<i32>, Value<i32>)>))
144+
.iter_add(1_isize),
145+
)
146+
.vec_ptr()
147+
.get_offset();
148+
let mut temp_vec: Vec<(Value<i32>, Value<i32>)> = Vec::new();
149+
let mut __it = (m.as_pointer() as Ptr<Map<i32, (Value<i32>, Value<i32>)>>)
150+
.with(|__m: &Map<i32, (Value<i32>, Value<i32>)>| __m.begin());
151+
while __it
152+
!= (m.as_pointer() as Ptr<Map<i32, (Value<i32>, Value<i32>)>>)
153+
.with(|__m: &Map<i32, (Value<i32>, Value<i32>)>| __m.end())
154+
{
155+
temp_vec.push(__it.iter_deref().read());
156+
__it.iter_inc();
157+
}
158+
(v6.as_pointer() as Ptr<Vec<(Value<i32>, Value<i32>)>>).with_mut(
159+
|v: &mut Vec<(Value<i32>, Value<i32>)>| {
160+
v.splice(start_idx..start_idx, temp_vec);
161+
},
162+
);
163+
RandomAccessIterator::Vec(
164+
(v6.as_pointer() as Ptr<Vec<(Value<i32>, Value<i32>)>>).decay() + start_idx,
165+
)
166+
};
167+
assert!(((*v6.borrow()).len() == 6_usize));
168+
assert!(
169+
(((*(*v6.borrow())[1_usize].0.borrow()) == 1)
170+
&& ((*(*v6.borrow())[3_usize].0.borrow()) == 3))
171+
&& ((*(*v6.borrow())[4_usize].0.borrow()) == 2)
172+
);
75173
return 0;
76174
}
77175
pub fn __cpp2rust_init_globals() {}

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ fn main_0() -> i32 {
252252
let mut __v = Vec::new();
253253
let mut __it = (src.as_pointer() as Ptr<u32>);
254254
while __it != (src.as_pointer() as Ptr<u32>).offset((3) as isize) {
255-
__v.push(u32::try_from(__it.iter_deref().read()).ok().unwrap());
255+
__v.push(<u32>::try_from(__it.iter_deref().read()).ok().unwrap());
256256
__it.iter_inc();
257257
}
258258
__v
@@ -263,7 +263,7 @@ fn main_0() -> i32 {
263263
let mut __v = Vec::new();
264264
let mut __it = (src.as_pointer() as Ptr<u32>);
265265
while __it != (src.as_pointer() as Ptr<u32>).offset((3) as isize) {
266-
__v.push(u64::try_from(__it.iter_deref().read()).ok().unwrap());
266+
__v.push(<u64>::try_from(__it.iter_deref().read()).ok().unwrap());
267267
__it.iter_inc();
268268
}
269269
__v
@@ -274,7 +274,7 @@ fn main_0() -> i32 {
274274
let mut __v = Vec::new();
275275
let mut __it = (src.as_pointer() as Ptr<u32>);
276276
while __it != (src.as_pointer() as Ptr<u32>).offset((3) as isize) {
277-
__v.push(i32::try_from(__it.iter_deref().read()).ok().unwrap());
277+
__v.push(<i32>::try_from(__it.iter_deref().read()).ok().unwrap());
278278
__it.iter_inc();
279279
}
280280
__v
@@ -286,7 +286,7 @@ fn main_0() -> i32 {
286286
let mut __v = Vec::new();
287287
let mut __it = (src1.as_pointer() as Ptr<u32>);
288288
while __it != (src1.as_pointer() as Ptr<u32>).to_end() {
289-
__v.push(u32::try_from(__it.iter_deref().read()).ok().unwrap());
289+
__v.push(<u32>::try_from(__it.iter_deref().read()).ok().unwrap());
290290
__it.iter_inc();
291291
}
292292
__v
@@ -301,7 +301,7 @@ fn main_0() -> i32 {
301301
let mut __v = Vec::new();
302302
let mut __it = (start).clone();
303303
while __it != start.offset((len) as isize) {
304-
__v.push(u8::try_from(__it.iter_deref().read()).ok().unwrap());
304+
__v.push(<u8>::try_from(__it.iter_deref().read()).ok().unwrap());
305305
__it.iter_inc();
306306
}
307307
__v

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ pub unsafe fn push_local_from_field_1(mut jpg: *mut JPEGData, mut cond: bool) {
4242
let mut __v = Vec::new();
4343
let mut __it = head.as_mut_ptr();
4444
while __it != head.as_mut_ptr().offset((3) as isize) {
45-
__v.push(u8::try_from((*__it.iter_deref()).clone()).ok().unwrap());
45+
__v.push(<u8>::try_from((*__it.iter_deref()).clone()).ok().unwrap());
4646
__it.iter_inc();
4747
}
4848
__v
@@ -72,7 +72,7 @@ pub unsafe fn emplace_local_from_field_4(mut jpg: *mut JPEGData, mut cond: bool)
7272
let mut __v = Vec::new();
7373
let mut __it = head.as_mut_ptr();
7474
while __it != head.as_mut_ptr().offset((3) as isize) {
75-
__v.push(u8::try_from((*__it.iter_deref()).clone()).ok().unwrap());
75+
__v.push(<u8>::try_from((*__it.iter_deref()).clone()).ok().unwrap());
7676
__it.iter_inc();
7777
}
7878
__v

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

Lines changed: 44 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ unsafe fn main_0() -> i32 {
1818
let mut __v = Vec::new();
1919
let mut __it = src.as_mut_ptr();
2020
while __it != src.as_mut_ptr().offset((3) as isize) {
21-
__v.push(u32::try_from((*__it.iter_deref()).clone()).ok().unwrap());
21+
__v.push(<u32>::try_from((*__it.iter_deref()).clone()).ok().unwrap());
2222
__it.iter_inc();
2323
}
2424
__v
@@ -32,7 +32,7 @@ unsafe fn main_0() -> i32 {
3232
let mut __v = Vec::new();
3333
let mut __it = src.as_mut_ptr();
3434
while __it != src.as_mut_ptr().offset((3) as isize) {
35-
__v.push(u64::try_from((*__it.iter_deref()).clone()).ok().unwrap());
35+
__v.push(<u64>::try_from((*__it.iter_deref()).clone()).ok().unwrap());
3636
__it.iter_inc();
3737
}
3838
__v
@@ -46,7 +46,7 @@ unsafe fn main_0() -> i32 {
4646
let mut __v = Vec::new();
4747
let mut __it = src.as_mut_ptr();
4848
while __it != src.as_mut_ptr().offset((3) as isize) {
49-
__v.push(i32::try_from((*__it.iter_deref()).clone()).ok().unwrap());
49+
__v.push(<i32>::try_from((*__it.iter_deref()).clone()).ok().unwrap());
5050
__it.iter_inc();
5151
}
5252
__v
@@ -58,7 +58,7 @@ unsafe fn main_0() -> i32 {
5858
let mut __v = Vec::new();
5959
let mut __it = src1.as_ptr();
6060
while __it != src1.as_ptr().add(src1.len()) {
61-
__v.push(u32::try_from((*__it.iter_deref()).clone()).ok().unwrap());
61+
__v.push(<u32>::try_from((*__it.iter_deref()).clone()).ok().unwrap());
6262
__it.iter_inc();
6363
}
6464
__v
@@ -75,13 +75,52 @@ unsafe fn main_0() -> i32 {
7575
let mut __v = Vec::new();
7676
let mut __it = start;
7777
while __it != start.offset((len) as isize) {
78-
__v.push(u8::try_from((*__it.iter_deref()).clone()).ok().unwrap());
78+
__v.push(<u8>::try_from((*__it.iter_deref()).clone()).ok().unwrap());
7979
__it.iter_inc();
8080
}
8181
__v
8282
};
8383
assert!(((v5.len()) == (5_usize)));
8484
assert!(((v5[(0_usize)] as i32) == (10)) && ((v5[(4_usize)] as i32) == (50)));
85+
let mut m: UnsafeMap<i32, (i32, i32)> = UnsafeMap::new();
86+
(*&mut (*m.get_or_insert_with(1.clone(), || (1, <i32>::default()))).1) = 10;
87+
(*&mut (*m.get_or_insert_with(2.clone(), || (2, <i32>::default()))).1) = 20;
88+
(*&mut (*m.get_or_insert_with(3.clone(), || (3, <i32>::default()))).1) = 30;
89+
let mut v6: Vec<(i32, i32)> = {
90+
let mut __v = Vec::new();
91+
let mut __it = m.begin();
92+
while __it != m.end() {
93+
__v.push(
94+
<(i32, i32)>::try_from((*__it.iter_deref()).clone())
95+
.ok()
96+
.unwrap(),
97+
);
98+
__it.iter_inc();
99+
}
100+
__v
101+
};
102+
assert!(((v6.len()) == (3_usize)));
103+
assert!(((v6[(0_usize)].0) == (1)) && ((v6[(0_usize)].1) == (10)));
104+
assert!(((v6[(2_usize)].0) == (3)) && ((v6[(2_usize)].1) == (30)));
105+
{
106+
let __off = <UnsafeRandomAccessIterator<(i32, i32)>>::from(
107+
UnsafeRandomAccessIterator::Vec(v6.as_mut_ptr()).iter_add(1_isize),
108+
)
109+
.vec_ptr()
110+
.offset_from(v6.as_ptr()) as usize;
111+
let mut __tmp = Vec::new();
112+
let mut __it = m.begin();
113+
while __it != m.end() {
114+
__tmp.push((*__it.iter_deref()).clone());
115+
__it.iter_inc();
116+
}
117+
v6.splice(__off..__off, __tmp);
118+
UnsafeRandomAccessIterator::Vec(v6.as_mut_ptr().add(__off))
119+
};
120+
assert!(((v6.len()) == (6_usize)));
121+
assert!(
122+
(((v6[(1_usize)].0) == (1)) && ((v6[(3_usize)].0) == (3))) && ((v6[(4_usize)].0) == (2))
123+
);
85124
return 0;
86125
}
87126
pub unsafe fn __cpp2rust_init_globals() {}

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,7 @@ unsafe fn main_0() -> i32 {
259259
let mut __v = Vec::new();
260260
let mut __it = src.as_mut_ptr();
261261
while __it != src.as_mut_ptr().offset((3) as isize) {
262-
__v.push(u32::try_from((*__it.iter_deref()).clone()).ok().unwrap());
262+
__v.push(<u32>::try_from((*__it.iter_deref()).clone()).ok().unwrap());
263263
__it.iter_inc();
264264
}
265265
__v
@@ -273,7 +273,7 @@ unsafe fn main_0() -> i32 {
273273
let mut __v = Vec::new();
274274
let mut __it = src.as_mut_ptr();
275275
while __it != src.as_mut_ptr().offset((3) as isize) {
276-
__v.push(u64::try_from((*__it.iter_deref()).clone()).ok().unwrap());
276+
__v.push(<u64>::try_from((*__it.iter_deref()).clone()).ok().unwrap());
277277
__it.iter_inc();
278278
}
279279
__v
@@ -287,7 +287,7 @@ unsafe fn main_0() -> i32 {
287287
let mut __v = Vec::new();
288288
let mut __it = src.as_mut_ptr();
289289
while __it != src.as_mut_ptr().offset((3) as isize) {
290-
__v.push(i32::try_from((*__it.iter_deref()).clone()).ok().unwrap());
290+
__v.push(<i32>::try_from((*__it.iter_deref()).clone()).ok().unwrap());
291291
__it.iter_inc();
292292
}
293293
__v
@@ -299,7 +299,7 @@ unsafe fn main_0() -> i32 {
299299
let mut __v = Vec::new();
300300
let mut __it = src1.as_ptr();
301301
while __it != src1.as_ptr().add(src1.len()) {
302-
__v.push(u32::try_from((*__it.iter_deref()).clone()).ok().unwrap());
302+
__v.push(<u32>::try_from((*__it.iter_deref()).clone()).ok().unwrap());
303303
__it.iter_inc();
304304
}
305305
__v
@@ -316,7 +316,7 @@ unsafe fn main_0() -> i32 {
316316
let mut __v = Vec::new();
317317
let mut __it = start;
318318
while __it != start.offset((len) as isize) {
319-
__v.push(u8::try_from((*__it.iter_deref()).clone()).ok().unwrap());
319+
__v.push(<u8>::try_from((*__it.iter_deref()).clone()).ok().unwrap());
320320
__it.iter_inc();
321321
}
322322
__v

0 commit comments

Comments
 (0)