Skip to content

Commit 08418af

Browse files
committed
Update tests
1 parent 30039a7 commit 08418af

6 files changed

Lines changed: 66 additions & 120 deletions

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

Lines changed: 52 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -12,39 +12,30 @@ thread_local!(
1212
thread_local!(
1313
pub static moves_1: Value<i32> = Rc::new(RefCell::new(0));
1414
);
15-
#[derive(VaArg, FnPtrArg, Default)]
15+
#[derive(Record, ByteRepr, VaArg, FnPtrArg, MoveCtor, Default)]
16+
#[byte_size(4)]
1617
pub struct Elem {
17-
pub v: Value<i32>,
18+
#[offset(0)]
19+
pub v: i32,
1820
}
1921
impl Elem {
20-
pub fn new(v: i32) -> Self {
21-
let v: Value<i32> = Rc::new(RefCell::new(v));
22-
let __this: Value<Elem> = Rc::new(RefCell::new(Self {
23-
v: Rc::new(RefCell::new((*v.borrow()))),
24-
}));
25-
let this: Ptr<Elem> = __this.as_pointer();
26-
Rc::try_unwrap(__this).ok().unwrap().into_inner()
22+
pub fn new(mut v: i32) -> Self {
23+
Self { v: v }
2724
}
2825
pub fn copy_from(other: Ptr<Elem>) -> Self {
29-
let __this: Value<Elem> = Rc::new(RefCell::new(Self {
30-
v: Rc::new(RefCell::new(
31-
((*(*other.upgrade().deref()).v.borrow()) + 100),
32-
)),
33-
}));
34-
let this: Ptr<Elem> = __this.as_pointer();
26+
let __this: Elem = Self {
27+
v: (other.with(|__s| __s.v) + 100),
28+
};
3529
(*copies_0.with(Value::clone).borrow_mut()).prefix_inc();
36-
Rc::try_unwrap(__this).ok().unwrap().into_inner()
30+
__this
3731
}
3832
pub fn move_from(other: Ptr<Elem>) -> Self {
39-
let __this: Value<Elem> = Rc::new(RefCell::new(Self {
40-
v: Rc::new(RefCell::new(
41-
((*(*other.upgrade().deref()).v.borrow()) + 1000),
42-
)),
43-
}));
44-
let this: Ptr<Elem> = __this.as_pointer();
45-
(*(*other.upgrade().deref()).v.borrow_mut()) = -1_i32;
33+
let __this: Elem = Self {
34+
v: (other.with(|__s| __s.v) + 1000),
35+
};
36+
field!(other, v).write(-1_i32);
4637
(*moves_1.with(Value::clone).borrow_mut()).prefix_inc();
47-
Rc::try_unwrap(__this).ok().unwrap().into_inner()
38+
__this
4839
}
4940
}
5041
impl Clone for Elem {
@@ -53,53 +44,20 @@ impl Clone for Elem {
5344
Elem::copy_from(__src.as_pointer())
5445
}
5546
}
56-
impl ByteRepr for Elem {
57-
fn byte_size() -> usize {
58-
4
59-
}
60-
fn to_bytes(&self, buf: &mut [u8]) {
61-
(*self.v.borrow()).to_bytes(&mut buf[0..4]);
62-
}
63-
fn from_bytes(buf: &[u8]) -> Self {
64-
Self {
65-
v: Rc::new(RefCell::new(<i32>::from_bytes(&buf[0..4]))),
66-
}
67-
}
68-
}
69-
#[derive(VaArg, FnPtrArg, Default)]
47+
#[derive(Clone, Record, ByteRepr, VaArg, FnPtrArg, Default)]
48+
#[byte_size(8)]
7049
pub struct Two {
71-
pub a: Value<Elem>,
72-
pub b: Value<Elem>,
73-
}
74-
impl Clone for Two {
75-
fn clone(&self) -> Self {
76-
let __this: Value<Two> = Rc::new(RefCell::new(Self {
77-
a: Rc::new(RefCell::new(Elem::copy_from({ self.a.as_pointer() }))),
78-
b: Rc::new(RefCell::new(Elem::copy_from({ self.b.as_pointer() }))),
79-
}));
80-
let this: Ptr<Two> = __this.as_pointer();
81-
Rc::try_unwrap(__this).ok().unwrap().into_inner()
82-
}
83-
}
84-
impl ByteRepr for Two {
85-
fn byte_size() -> usize {
86-
8
87-
}
88-
fn to_bytes(&self, buf: &mut [u8]) {
89-
(*self.a.borrow()).to_bytes(&mut buf[0..4]);
90-
(*self.b.borrow()).to_bytes(&mut buf[4..8]);
91-
}
92-
fn from_bytes(buf: &[u8]) -> Self {
93-
Self {
94-
a: Rc::new(RefCell::new(<Elem>::from_bytes(&buf[0..4]))),
95-
b: Rc::new(RefCell::new(<Elem>::from_bytes(&buf[4..8]))),
96-
}
97-
}
50+
#[offset(0)]
51+
#[byte_size(4)]
52+
pub a: Elem,
53+
#[offset(4)]
54+
#[byte_size(4)]
55+
pub b: Elem,
9856
}
9957
pub fn make_two_2() -> Two {
10058
return Two {
101-
a: Rc::new(RefCell::new(Elem::new({ 1 }))),
102-
b: Rc::new(RefCell::new(Elem::new({ 2 }))),
59+
a: Elem::new({ 1 }),
60+
b: Elem::new({ 2 }),
10361
};
10462
}
10563
pub fn main() {
@@ -108,32 +66,32 @@ pub fn main() {
10866
}
10967
fn main_0() -> i32 {
11068
let t: Value<Two> = Rc::new(RefCell::new(Two {
111-
a: Rc::new(RefCell::new(Elem::new({ 1 }))),
112-
b: Rc::new(RefCell::new(Elem::new({ 2 }))),
69+
a: Elem::new({ 1 }),
70+
b: Elem::new({ 2 }),
11371
}));
114-
let base_copies: Value<i32> = Rc::new(RefCell::new(copies_0.with(|rc| *rc.borrow())));
115-
let base_moves: Value<i32> = Rc::new(RefCell::new(moves_1.with(|rc| *rc.borrow())));
72+
let mut base_copies: i32 = copies_0.with(|rc| *rc.borrow());
73+
let mut base_moves: i32 = moves_1.with(|rc| *rc.borrow());
11674
let __decomp_3: Value<Two> = Rc::new(RefCell::new((*t.borrow()).clone()));
117-
assert!((copies_0.with(|rc| *rc.borrow()) == ((*base_copies.borrow()) + 2)));
118-
assert!((moves_1.with(|rc| *rc.borrow()) == (*base_moves.borrow())));
119-
assert!(((*(*(*__decomp_3.borrow()).a.borrow()).v.borrow()) == 101));
120-
assert!(((*(*(*__decomp_3.borrow()).b.borrow()).v.borrow()) == 102));
75+
assert!((copies_0.with(|rc| *rc.borrow()) == (base_copies + 2)));
76+
assert!((moves_1.with(|rc| *rc.borrow()) == base_moves));
77+
assert!(({ (*__decomp_3.borrow()).a.v } == 101));
78+
assert!(({ (*__decomp_3.borrow()).b.v } == 102));
12179
let __decomp_4: Ptr<Two> = t.as_pointer();
122-
assert!((copies_0.with(|rc| *rc.borrow()) == ((*base_copies.borrow()) + 2)));
123-
assert!(((*(*(*__decomp_4.upgrade().deref()).a.borrow()).v.borrow()) == 1));
124-
(*(*(*__decomp_4.upgrade().deref()).a.borrow()).v.borrow_mut()) = 50;
125-
assert!(((*(*(*t.borrow()).a.borrow()).v.borrow()) == 50));
80+
assert!((copies_0.with(|rc| *rc.borrow()) == (base_copies + 2)));
81+
assert!(({ (*__decomp_4.upgrade().deref()).a.v } == 1));
82+
field!(field!(__decomp_4, a), v).write(50);
83+
assert!(({ (*t.borrow()).a.v } == 50));
12684
let __decomp_5: Value<Two> = Rc::new(RefCell::new((*t.borrow()).clone()));
127-
assert!((moves_1.with(|rc| *rc.borrow()) == ((*base_moves.borrow()) + 2)));
128-
assert!(((*(*(*__decomp_5.borrow()).a.borrow()).v.borrow()) == 1050));
129-
assert!(((*(*(*__decomp_5.borrow()).b.borrow()).v.borrow()) == 1002));
130-
assert!(((*(*(*t.borrow()).a.borrow()).v.borrow()) == -1_i32));
131-
let before_copies: Value<i32> = Rc::new(RefCell::new(copies_0.with(|rc| *rc.borrow())));
132-
let before_moves: Value<i32> = Rc::new(RefCell::new(moves_1.with(|rc| *rc.borrow())));
85+
assert!((moves_1.with(|rc| *rc.borrow()) == (base_moves + 2)));
86+
assert!(({ (*__decomp_5.borrow()).a.v } == 1050));
87+
assert!(({ (*__decomp_5.borrow()).b.v } == 1002));
88+
assert!(({ (*t.borrow()).a.v } == -1_i32));
89+
let mut before_copies: i32 = copies_0.with(|rc| *rc.borrow());
90+
let mut before_moves: i32 = moves_1.with(|rc| *rc.borrow());
13391
let __decomp_6: Value<Two> = Rc::new(RefCell::new(({ make_two_2() })));
134-
assert!((copies_0.with(|rc| *rc.borrow()) == (*before_copies.borrow())));
135-
assert!((moves_1.with(|rc| *rc.borrow()) == (*before_moves.borrow())));
136-
assert!(((*(*(*__decomp_6.borrow()).a.borrow()).v.borrow()) == 1));
92+
assert!((copies_0.with(|rc| *rc.borrow()) == before_copies));
93+
assert!((moves_1.with(|rc| *rc.borrow()) == before_moves));
94+
assert!(({ (*__decomp_6.borrow()).a.v } == 1));
13795
let p: Value<(Value<Elem>, Value<Elem>)> = Rc::new(RefCell::new((
13896
Rc::new(RefCell::new(
13997
Elem::new({ 7 }).try_into().expect("failed conversion"),
@@ -142,20 +100,16 @@ fn main_0() -> i32 {
142100
Elem::new({ 8 }).try_into().expect("failed conversion"),
143101
)),
144102
)));
145-
(*before_copies.borrow_mut()) = copies_0.with(|rc| *rc.borrow());
103+
before_copies = copies_0.with(|rc| *rc.borrow());
146104
let __decomp_7: Value<(Value<Elem>, Value<Elem>)> = Rc::new(RefCell::new((
147105
Rc::new(RefCell::new((*p.borrow()).0.borrow().clone())),
148106
Rc::new(RefCell::new((*p.borrow()).1.borrow().clone())),
149107
)));
150-
let x: Ptr<Elem> = ({ get_8((__decomp_7.as_pointer()).clone()) });
151-
let y: Ptr<Elem> = ({ get_9((__decomp_7.as_pointer()).clone()) });
152-
assert!((copies_0.with(|rc| *rc.borrow()) == ((*before_copies.borrow()) + 2)));
153-
assert!(
154-
((*(*x.upgrade().deref()).v.borrow()) == ((*(*(*p.borrow()).0.borrow()).v.borrow()) + 100))
155-
);
156-
assert!(
157-
((*(*y.upgrade().deref()).v.borrow()) == ((*(*(*p.borrow()).1.borrow()).v.borrow()) + 100))
158-
);
108+
let x: Ptr<Elem> = ({ get_8(__decomp_7.as_pointer()) });
109+
let y: Ptr<Elem> = ({ get_9(__decomp_7.as_pointer()) });
110+
assert!((copies_0.with(|rc| *rc.borrow()) == (before_copies + 2)));
111+
assert!(({ (*x.upgrade().deref()).v } == ({ (*(*p.borrow()).0.borrow()).v } + 100)));
112+
assert!(({ (*y.upgrade().deref()).v } == ({ (*(*p.borrow()).1.borrow()).v } + 100)));
159113
return 0;
160114
}
161115
pub fn __cpp2rust_init_globals() {

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

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,10 @@ use std::io::prelude::*;
66
use std::io::{Read, Seek, Write};
77
use std::os::fd::AsFd;
88
use std::rc::{Rc, Weak};
9-
pub fn make_std_pair_0(x: i32) -> (Value<i32>, Value<bool>) {
10-
let x: Value<i32> = Rc::new(RefCell::new(x));
9+
pub fn make_std_pair_0(mut x: i32) -> (Value<i32>, Value<bool>) {
1110
return (
12-
Rc::new(RefCell::new(
13-
(*x.borrow()).try_into().expect("failed conversion"),
14-
)),
15-
Rc::new(RefCell::new(
16-
((*x.borrow()) > 0).try_into().expect("failed conversion"),
17-
)),
11+
Rc::new(RefCell::new(x.try_into().expect("failed conversion"))),
12+
Rc::new(RefCell::new((x > 0).try_into().expect("failed conversion"))),
1813
);
1914
}
2015
pub fn main() {
@@ -24,8 +19,8 @@ pub fn main() {
2419
fn main_0() -> i32 {
2520
let __decomp_1: Value<(Value<i32>, Value<bool>)> =
2621
Rc::new(RefCell::new(({ make_std_pair_0(5) })));
27-
let value: Ptr<i32> = ({ get_2((__decomp_1.as_pointer()).clone()) });
28-
let positive: Ptr<bool> = ({ get_3((__decomp_1.as_pointer()).clone()) });
22+
let value: Ptr<i32> = ({ get_2(__decomp_1.as_pointer()) });
23+
let positive: Ptr<bool> = ({ get_3(__decomp_1.as_pointer()) });
2924
assert!(((value.read()) == 5));
3025
assert!(((positive.read()) as bool));
3126
let p: Value<(Value<i32>, Value<i32>)> = Rc::new(RefCell::new((
@@ -36,19 +31,18 @@ fn main_0() -> i32 {
3631
Rc::new(RefCell::new((*p.borrow()).0.borrow().clone())),
3732
Rc::new(RefCell::new((*p.borrow()).1.borrow().clone())),
3833
)));
39-
let a: Ptr<i32> = ({ get_5((__decomp_4.as_pointer()).clone()) });
40-
let b: Ptr<i32> = ({ get_6((__decomp_4.as_pointer()).clone()) });
34+
let a: Ptr<i32> = ({ get_5(__decomp_4.as_pointer()) });
35+
let b: Ptr<i32> = ({ get_6(__decomp_4.as_pointer()) });
4136
a.write(10);
4237
assert!(((a.read()) == 10));
4338
assert!(((b.read()) == 2));
4439
assert!(((*(*p.borrow()).0.borrow()) == 1));
4540
let __decomp_7: Ptr<(Value<i32>, Value<i32>)> = p.as_pointer();
46-
let x: Ptr<i32> = ({ get_8((__decomp_7).clone()) });
47-
let y: Ptr<i32> = ({ get_9((__decomp_7).clone()) });
41+
let x: Ptr<i32> = (*__decomp_7.upgrade().deref()).0.as_pointer();
42+
let y: Ptr<i32> = (*__decomp_7.upgrade().deref()).1.as_pointer();
4843
x.write(3);
4944
{
50-
let _ptr = y.clone();
51-
_ptr.write(_ptr.read() + 4)
45+
y.with_mut(|__v| *__v = *__v + 4)
5246
};
5347
assert!(((*(*p.borrow()).0.borrow()) == 3));
5448
assert!(((*(*p.borrow()).1.borrow()) == 6));

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use std::rc::Rc;
99
pub static mut copies_0: std::cell::LazyCell<i32> = std::cell::LazyCell::new(|| unsafe { 0 });
1010
pub static mut moves_1: std::cell::LazyCell<i32> = std::cell::LazyCell::new(|| unsafe { 0 });
1111
#[repr(C)]
12-
#[derive(VaArg, Default)]
12+
#[derive(VaArg, FnPtrArg, MoveCtorUnsafe, Default)]
1313
pub struct Elem {
1414
pub v: i32,
1515
}
@@ -40,7 +40,7 @@ impl Clone for Elem {
4040
}
4141
}
4242
#[repr(C)]
43-
#[derive(Clone, VaArg, Default)]
43+
#[derive(Clone, VaArg, FnPtrArg, Default)]
4444
pub struct Two {
4545
pub a: Elem,
4646
pub b: Elem,

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ unsafe fn main_0() -> i32 {
3030
assert!(((*b) == (2)));
3131
assert!(((p.0) == (1)));
3232
let __decomp_7: *mut (i32, i32) = &mut p;
33-
let x: *mut i32 = (unsafe { get_8(__decomp_7) });
34-
let y: *mut i32 = (unsafe { get_9(__decomp_7) });
33+
let x: *mut i32 = &mut (*__decomp_7).0;
34+
let y: *mut i32 = &mut (*__decomp_7).1;
3535
(*x) = 3;
3636
(*y) += 4;
3737
assert!(((p.0) == (3)));

‎tests/unit/structured_binding_element_ctor.cpp‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
// ADDITIONAL_COMPILE_FLAGS: -std=c++17
2-
// no-compile
32
#include <assert.h>
43
#include <utility>
54

‎tests/unit/structured_binding_pair.cpp‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
// ADDITIONAL_COMPILE_FLAGS: -std=c++17
2-
// no-compile
32
#include <assert.h>
43
#include <utility>
54

0 commit comments

Comments
 (0)