diff --git a/rules/array/tgt_refcount.rs b/rules/array/tgt_refcount.rs index 7b9b72cdd..91f5d9c94 100644 --- a/rules/array/tgt_refcount.rs +++ b/rules/array/tgt_refcount.rs @@ -21,6 +21,10 @@ fn f1(a0: Ptr) -> Ptr { a0 } +fn f2(a0: Ptr) -> usize { + T2 +} + fn f3(a0: Ptr) -> Ptr { a0 } @@ -35,6 +39,10 @@ fn f5(a0: Ptr, a1: Ptr) { } } +fn f6(a0: Ptr) -> Box<[T1]> { + (0..T2).map(|__i| a0.read_at(__i)).collect() +} + fn f7(a0: Ptr, a1: Ptr) { for __i in 0..T2 { T1::copy_assign(&a0.offset(__i), a1.offset(__i)); diff --git a/tests/unit/inline_container_fields.cpp b/tests/unit/inline_container_fields.cpp index cb3388b55..bb7ddd42f 100644 --- a/tests/unit/inline_container_fields.cpp +++ b/tests/unit/inline_container_fields.cpp @@ -131,6 +131,7 @@ int main() { assert(moves == 3 && copies == 0 && cb[1].v == 5 && ca[1].v == -1); std::array cc(cb); assert(copies == 3 && cc[1].v == 5 && cb[1].v == 5); + assert(cc.size() == 3); cc[2].v = 8; cb = cc; assert(copy_assigns == 3 && move_assigns == 0 && cb[2].v == 8); diff --git a/tests/unit/out/refcount/inline_container_fields.rs b/tests/unit/out/refcount/inline_container_fields.rs index bdb9c6ed7..3b5343355 100644 --- a/tests/unit/out/refcount/inline_container_fields.rs +++ b/tests/unit/out/refcount/inline_container_fields.rs @@ -366,13 +366,16 @@ fn main_0() -> i32 { && ({ (*ca.borrow())[1_usize].v } == -1_i32) }) ); - let cc: Value> = Rc::new(RefCell::new((*cb.borrow()).clone())); + let cc: Value> = Rc::new(RefCell::new( + (0..3).map(|__i| cb.decay().read_at(__i)).collect(), + )); assert!( ({ ((copies_2.with(|rc| *rc.borrow()) == 3) && ({ (*cc.borrow())[1_usize].v } == 5)) && ({ (*cb.borrow())[1_usize].v } == 5) }) ); + assert!((3 == 3_usize)); (*cc.borrow_mut())[2_usize].v = 8; for __i in 0..3 { &cb.decay().offset(__i).copy_assign(cc.decay().offset(__i)); diff --git a/tests/unit/out/unsafe/inline_container_fields.rs b/tests/unit/out/unsafe/inline_container_fields.rs index d90a7bc54..8427fa60a 100644 --- a/tests/unit/out/unsafe/inline_container_fields.rs +++ b/tests/unit/out/unsafe/inline_container_fields.rs @@ -284,6 +284,7 @@ unsafe fn main_0() -> i32 { && ((cc[(1_usize)].v) == (5))) && ((cb[(1_usize)].v) == (5)) ); + assert!(((3) == (3_usize))); cc[(2_usize)].v = 8; for __i in 0..3 { (*&mut cb[__i]).copy_assign(&cc[__i]);