Skip to content

Commit 46cde92

Browse files
committed
fix
1 parent 29298f7 commit 46cde92

3 files changed

Lines changed: 142 additions & 61 deletions

File tree

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

Lines changed: 72 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -26,18 +26,17 @@ fn main_0() -> i32 {
2626
};
2727
let v_begin: Value<Ptr<i32>> = Rc::new(RefCell::new((v.as_pointer() as Ptr<i32>)));
2828
let v_end: Value<Ptr<i32>> = Rc::new(RefCell::new((v.as_pointer() as Ptr<i32>).to_end()));
29-
let it: Value<Ptr<i32>> = Rc::new(RefCell::new(
29+
let it: Value<Ptr<i32>> = Rc::new(RefCell::new({
30+
let count = ((*v_end.borrow()).get_offset() - (*v_begin.borrow()).get_offset()) as usize;
3031
(*v_begin.borrow()).offset(
3132
(*v_begin.borrow())
3233
.clone()
3334
.into_iter()
34-
.enumerate()
35-
.position(|(index_0, value_0)| {
36-
index_0 < (*v_end.borrow()).get_offset() as usize && value_0.read() == 2
37-
})
38-
.unwrap_or((*v_end.borrow()).get_offset() as usize) as isize,
39-
),
40-
));
35+
.take(count)
36+
.position(|value_0| value_0.read() == 2)
37+
.unwrap_or(count) as isize,
38+
)
39+
}));
4140
let mut v_result_true: bool = (*it.borrow()) != (v.as_pointer() as Ptr<i32>).to_end();
4241
let m: Value<BTreeMap<i32, Value<f64>>> = Rc::new(RefCell::new(BTreeMap::new()));
4342
(m.as_pointer() as Ptr<BTreeMap<i32, Value<f64>>>)
@@ -70,18 +69,73 @@ fn main_0() -> i32 {
7069
let mut m_result_true: bool = (*m_begin.borrow()) != (*m_end.borrow());
7170
assert!(
7271
((v_result_true) && (m_result_true))
73-
&& ((v.as_pointer() as Ptr<i32>).offset(
74-
(v.as_pointer() as Ptr<i32>)
72+
&& ({
73+
let count = ((v.as_pointer() as Ptr<i32>).get_offset()
74+
- (v.as_pointer() as Ptr<i32>).get_offset())
75+
as usize;
76+
(v.as_pointer() as Ptr<i32>).offset(
77+
(v.as_pointer() as Ptr<i32>)
78+
.clone()
79+
.into_iter()
80+
.take(count)
81+
.position(|value_0| value_0.read() == 2)
82+
.unwrap_or(count) as isize,
83+
)
84+
} == (v.as_pointer() as Ptr<i32>))
85+
);
86+
let w: Value<Vec<i32>> = Rc::new(RefCell::new(vec![1, 2, 3, 4, 5]));
87+
assert!(
88+
{
89+
let count = ((w.as_pointer() as Ptr<i32>).to_end().get_offset()
90+
- (w.as_pointer() as Ptr<i32>)
91+
.offset(2_i64 as isize)
92+
.get_offset()) as usize;
93+
(w.as_pointer() as Ptr<i32>).offset(2_i64 as isize).offset(
94+
(w.as_pointer() as Ptr<i32>)
95+
.offset(2_i64 as isize)
96+
.clone()
97+
.into_iter()
98+
.take(count)
99+
.position(|value_0| value_0.read() == 4)
100+
.unwrap_or(count) as isize,
101+
)
102+
} == (w.as_pointer() as Ptr<i32>).offset(3_i64 as isize)
103+
);
104+
assert!(
105+
{
106+
let count = ((w.as_pointer() as Ptr<i32>).to_end().get_offset()
107+
- (w.as_pointer() as Ptr<i32>)
108+
.offset(2_i64 as isize)
109+
.get_offset()) as usize;
110+
(w.as_pointer() as Ptr<i32>).offset(2_i64 as isize).offset(
111+
(w.as_pointer() as Ptr<i32>)
112+
.offset(2_i64 as isize)
113+
.clone()
114+
.into_iter()
115+
.take(count)
116+
.position(|value_0| value_0.read() == 1)
117+
.unwrap_or(count) as isize,
118+
)
119+
} == (w.as_pointer() as Ptr<i32>).to_end()
120+
);
121+
assert!(
122+
{
123+
let count = ((w.as_pointer() as Ptr<i32>)
124+
.offset(4_i64 as isize)
125+
.get_offset()
126+
- (w.as_pointer() as Ptr<i32>)
127+
.offset(2_i64 as isize)
128+
.get_offset()) as usize;
129+
(w.as_pointer() as Ptr<i32>).offset(2_i64 as isize).offset(
130+
(w.as_pointer() as Ptr<i32>)
131+
.offset(2_i64 as isize)
75132
.clone()
76133
.into_iter()
77-
.enumerate()
78-
.position(|(index_0, value_0)| {
79-
index_0 < (v.as_pointer() as Ptr<i32>).get_offset() as usize
80-
&& value_0.read() == 2
81-
})
82-
.unwrap_or((v.as_pointer() as Ptr<i32>).get_offset() as usize)
83-
as isize,
84-
) == (v.as_pointer() as Ptr<i32>))
134+
.take(count)
135+
.position(|value_0| value_0.read() == 5)
136+
.unwrap_or(count) as isize,
137+
)
138+
} == (w.as_pointer() as Ptr<i32>).offset(4_i64 as isize)
85139
);
86140
return 0;
87141
}

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

Lines changed: 42 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -170,36 +170,36 @@ fn main_0() -> i32 {
170170
let mut nine: Eq = Eq { v: 9 };
171171
assert!(
172172
({
173-
((eqs.as_pointer() as Ptr<Eq>)
174-
.offset(
173+
({
174+
let count = ((eqs.as_pointer() as Ptr<Eq>).to_end().get_offset()
175+
- (eqs.as_pointer() as Ptr<Eq>).get_offset())
176+
as usize;
177+
(eqs.as_pointer() as Ptr<Eq>).offset(
175178
(eqs.as_pointer() as Ptr<Eq>)
176179
.clone()
177180
.into_iter()
178-
.enumerate()
179-
.position(|(index_0, value_0)| {
180-
index_0 < (eqs.as_pointer() as Ptr<Eq>).to_end().get_offset() as usize
181-
&& value_0.read() == two
182-
})
183-
.unwrap_or((eqs.as_pointer() as Ptr<Eq>).to_end().get_offset() as usize)
184-
as isize,
181+
.take(count)
182+
.position(|value_0| value_0.read() == two)
183+
.unwrap_or(count) as isize,
185184
)
186-
.read())
185+
}
186+
.read())
187187
.v
188188
} == 2)
189189
);
190190
assert!(
191-
(eqs.as_pointer() as Ptr<Eq>).offset(
192-
(eqs.as_pointer() as Ptr<Eq>)
193-
.clone()
194-
.into_iter()
195-
.enumerate()
196-
.position(|(index_0, value_0)| {
197-
index_0 < (eqs.as_pointer() as Ptr<Eq>).to_end().get_offset() as usize
198-
&& value_0.read() == nine
199-
})
200-
.unwrap_or((eqs.as_pointer() as Ptr<Eq>).to_end().get_offset() as usize)
201-
as isize,
202-
) == (eqs.as_pointer() as Ptr<Eq>).to_end()
191+
{
192+
let count = ((eqs.as_pointer() as Ptr<Eq>).to_end().get_offset()
193+
- (eqs.as_pointer() as Ptr<Eq>).get_offset()) as usize;
194+
(eqs.as_pointer() as Ptr<Eq>).offset(
195+
(eqs.as_pointer() as Ptr<Eq>)
196+
.clone()
197+
.into_iter()
198+
.take(count)
199+
.position(|value_0| value_0.read() == nine)
200+
.unwrap_or(count) as isize,
201+
)
202+
} == (eqs.as_pointer() as Ptr<Eq>).to_end()
203203
);
204204
let cmps: Value<Vec<Cmp>> =
205205
Rc::new(RefCell::new(vec![Cmp { v: 3 }, Cmp { v: 1 }, Cmp { v: 2 }]));
@@ -208,20 +208,20 @@ fn main_0() -> i32 {
208208
let mut three: Cmp = Cmp { v: 3 };
209209
assert!(
210210
({
211-
((cmps.as_pointer() as Ptr<Cmp>)
212-
.offset(
211+
({
212+
let count = ((cmps.as_pointer() as Ptr<Cmp>).to_end().get_offset()
213+
- (cmps.as_pointer() as Ptr<Cmp>).get_offset())
214+
as usize;
215+
(cmps.as_pointer() as Ptr<Cmp>).offset(
213216
(cmps.as_pointer() as Ptr<Cmp>)
214217
.clone()
215218
.into_iter()
216-
.enumerate()
217-
.position(|(index_0, value_0)| {
218-
index_0 < (cmps.as_pointer() as Ptr<Cmp>).to_end().get_offset() as usize
219-
&& value_0.read() == three
220-
})
221-
.unwrap_or((cmps.as_pointer() as Ptr<Cmp>).to_end().get_offset() as usize)
222-
as isize,
219+
.take(count)
220+
.position(|value_0| value_0.read() == three)
221+
.unwrap_or(count) as isize,
223222
)
224-
.read())
223+
}
224+
.read())
225225
.v
226226
} == 3)
227227
);
@@ -231,21 +231,20 @@ fn main_0() -> i32 {
231231
let mut ftwo: Free = Free { v: 2 };
232232
assert!(
233233
({
234-
((frees.as_pointer() as Ptr<Free>)
235-
.offset(
234+
({
235+
let count = ((frees.as_pointer() as Ptr<Free>).to_end().get_offset()
236+
- (frees.as_pointer() as Ptr<Free>).get_offset())
237+
as usize;
238+
(frees.as_pointer() as Ptr<Free>).offset(
236239
(frees.as_pointer() as Ptr<Free>)
237240
.clone()
238241
.into_iter()
239-
.enumerate()
240-
.position(|(index_0, value_0)| {
241-
index_0
242-
< (frees.as_pointer() as Ptr<Free>).to_end().get_offset() as usize
243-
&& value_0.read() == ftwo
244-
})
245-
.unwrap_or((frees.as_pointer() as Ptr<Free>).to_end().get_offset() as usize)
246-
as isize,
242+
.take(count)
243+
.position(|value_0| value_0.read() == ftwo)
244+
.unwrap_or(count) as isize,
247245
)
248-
.read())
246+
}
247+
.read())
249248
.v
250249
} == 2)
251250
);

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

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,34 @@ unsafe fn main_0() -> i32 {
5555
it
5656
} == v.as_mut_ptr())
5757
);
58+
let mut w: Vec<i32> = vec![1, 2, 3, 4, 5];
59+
assert!(
60+
{
61+
let mut it = w.as_mut_ptr().add(2_i64 as usize);
62+
while it != w.as_mut_ptr().add(w.len()) && *it != 4 {
63+
it = it.add(1);
64+
}
65+
it
66+
} == w.as_mut_ptr().add(3_i64 as usize)
67+
);
68+
assert!(
69+
{
70+
let mut it = w.as_mut_ptr().add(2_i64 as usize);
71+
while it != w.as_mut_ptr().add(w.len()) && *it != 1 {
72+
it = it.add(1);
73+
}
74+
it
75+
} == w.as_mut_ptr().add(w.len())
76+
);
77+
assert!(
78+
{
79+
let mut it = w.as_mut_ptr().add(2_i64 as usize);
80+
while it != w.as_mut_ptr().add(4_i64 as usize) && *it != 5 {
81+
it = it.add(1);
82+
}
83+
it
84+
} == w.as_mut_ptr().add(4_i64 as usize)
85+
);
5886
return 0;
5987
}
6088
pub unsafe fn __cpp2rust_init_globals() {}

0 commit comments

Comments
 (0)