Skip to content

Commit 526315e

Browse files
committed
Set freshness in VisitArrayInitIndexExpr
1 parent ac293cd commit 526315e

4 files changed

Lines changed: 19 additions & 22 deletions

File tree

‎cpp2rust/converter/converter.cpp‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3232,6 +3232,7 @@ bool Converter::VisitOpaqueValueExpr(clang::OpaqueValueExpr *expr) {
32323232

32333233
bool Converter::VisitArrayInitIndexExpr(clang::ArrayInitIndexExpr *expr) {
32343234
StrCat("__i");
3235+
computed_expr_type_ = ComputedExprType::FreshValue;
32353236
return false;
32363237
}
32373238

‎tests/multi-file/defaulted_move_cross_tu/out/refcount/defaulted_move_cross_tu.rs‎

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ impl S {
2626
}
2727
pub fn S_pmutS(_a0: Ptr<S>) -> Self {
2828
let __this: Value<S> = Rc::new(RefCell::new(Self {
29-
v: Rc::new(RefCell::new(std::mem::take(
30-
&mut (*(*_a0.upgrade().deref()).v.borrow_mut()),
31-
))),
29+
v: Rc::new(RefCell::new(
30+
(std::mem::take(&mut (*(*_a0.upgrade().deref()).v.borrow_mut()))).clone(),
31+
)),
3232
n: Rc::new(RefCell::new(Box::new(std::array::from_fn::<_, 2, _>(
3333
|__i: usize| (*(*_a0.upgrade().deref()).n.borrow())[(__i) as usize],
3434
)))),
@@ -105,9 +105,7 @@ impl SImpl for Ptr<S> {
105105
&(((*_a0.upgrade().deref()).n.as_pointer()) as Ptr<i32>).to_any(),
106106
8_usize as usize,
107107
);
108-
(((*(*self).upgrade().deref()).n.as_pointer()) as Ptr<i32>)
109-
.to_any()
110-
.clone()
108+
(((*(*self).upgrade().deref()).n.as_pointer()) as Ptr<i32>).to_any()
111109
};
112110
return (*self).clone();
113111
}

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,9 @@ impl Clone for Foo {
4646
x: Rc::new(RefCell::new((*self.x.borrow()))),
4747
y: (self.y).clone(),
4848
z: Rc::new(RefCell::new((*self.z.borrow()).clone())),
49-
a: Rc::new(RefCell::new((*self.a.borrow()).clone())),
49+
a: Rc::new(RefCell::new(Box::new(std::array::from_fn::<_, 3, _>(
50+
|__i: usize| (*self.a.borrow())[(__i) as usize],
51+
)))),
5052
bar: Rc::new(RefCell::new((*self.bar.borrow()).clone())),
5153
}));
5254
let this: Ptr<Foo> = __this.as_pointer();

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

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -263,12 +263,12 @@ impl Buffer {
263263
}
264264
pub fn Buffer_pmutBuffer(_a0: Ptr<Buffer>) -> Self {
265265
let __this: Value<Buffer> = Rc::new(RefCell::new(Self {
266-
data: Rc::new(RefCell::new(std::mem::take(
267-
&mut (*(*_a0.upgrade().deref()).data.borrow_mut()),
268-
))),
269-
rows: Rc::new(RefCell::new(std::mem::take(
270-
&mut (*(*_a0.upgrade().deref()).rows.borrow_mut()),
271-
))),
266+
data: Rc::new(RefCell::new(
267+
(std::mem::take(&mut (*(*_a0.upgrade().deref()).data.borrow_mut()))).clone(),
268+
)),
269+
rows: Rc::new(RefCell::new(
270+
(std::mem::take(&mut (*(*_a0.upgrade().deref()).rows.borrow_mut()))).clone(),
271+
)),
272272
n: Rc::new(RefCell::new((*(*_a0.upgrade().deref()).n.borrow()))),
273273
arr: Rc::new(RefCell::new(Box::new(std::array::from_fn::<_, 2, _>(
274274
|__i: usize| (*(*_a0.upgrade().deref()).arr.borrow())[(__i) as usize],
@@ -321,9 +321,9 @@ pub struct Owner {
321321
impl Owner {
322322
pub fn Owner_pmutOwner(_a0: Ptr<Owner>) -> Self {
323323
let __this: Value<Owner> = Rc::new(RefCell::new(Self {
324-
data: Rc::new(RefCell::new(std::mem::take(
325-
&mut (*(*_a0.upgrade().deref()).data.borrow_mut()),
326-
))),
324+
data: Rc::new(RefCell::new(
325+
(std::mem::take(&mut (*(*_a0.upgrade().deref()).data.borrow_mut()))).clone(),
326+
)),
327327
n: Rc::new(RefCell::new((*(*_a0.upgrade().deref()).n.borrow()))),
328328
arr: Rc::new(RefCell::new(Box::new(std::array::from_fn::<_, 2, _>(
329329
|__i: usize| (*(*_a0.upgrade().deref()).arr.borrow())[(__i) as usize],
@@ -727,9 +727,7 @@ impl BufferImpl for Ptr<Buffer> {
727727
&(((*_a0.upgrade().deref()).arr.as_pointer()) as Ptr<i32>).to_any(),
728728
8_usize as usize,
729729
);
730-
(((*(*self).upgrade().deref()).arr.as_pointer()) as Ptr<i32>)
731-
.to_any()
732-
.clone()
730+
(((*(*self).upgrade().deref()).arr.as_pointer()) as Ptr<i32>).to_any()
733731
};
734732
return (*self).clone();
735733
}
@@ -792,9 +790,7 @@ impl OwnerImpl for Ptr<Owner> {
792790
&(((*_a0.upgrade().deref()).arr.as_pointer()) as Ptr<i32>).to_any(),
793791
8_usize as usize,
794792
);
795-
(((*(*self).upgrade().deref()).arr.as_pointer()) as Ptr<i32>)
796-
.to_any()
797-
.clone()
793+
(((*(*self).upgrade().deref()).arr.as_pointer()) as Ptr<i32>).to_any()
798794
};
799795
((*(*self).upgrade().deref()).p.as_pointer() as Ptr<Option<Value<i32>>>)
800796
.write((*(*_a0.upgrade().deref()).p.borrow_mut()).take());

0 commit comments

Comments
 (0)