Skip to content

Commit 62b87af

Browse files
committed
Add more get overloads
1 parent 08418af commit 62b87af

7 files changed

Lines changed: 44 additions & 20 deletions

File tree

‎rules/pair/src.cpp‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,3 +64,11 @@ template <typename T1, typename T2> const T1 &f19(const std::pair<T1, T2> &a0) {
6464
template <typename T1, typename T2> const T2 &f20(const std::pair<T1, T2> &a0) {
6565
return std::get<1>(a0);
6666
}
67+
68+
template <typename T1, typename T2> T1 &&f21(std::pair<T1, T2> &&a0) {
69+
return std::get<0>(std::move(a0));
70+
}
71+
72+
template <typename T1, typename T2> T2 &&f22(std::pair<T1, T2> &&a0) {
73+
return std::get<1>(std::move(a0));
74+
}

‎rules/pair/tgt_refcount.rs‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,3 +84,11 @@ fn f19<T1, T2>(a0: (Value<T1>, Value<T2>)) -> Ptr<T1> {
8484
fn f20<T1, T2>(a0: (Value<T1>, Value<T2>)) -> Ptr<T2> {
8585
a0.1.as_pointer()
8686
}
87+
88+
fn f21<T1, T2>(a0: (Value<T1>, Value<T2>)) -> Ptr<T1> {
89+
a0.0.as_pointer()
90+
}
91+
92+
fn f22<T1, T2>(a0: (Value<T1>, Value<T2>)) -> Ptr<T2> {
93+
a0.1.as_pointer()
94+
}

‎rules/pair/tgt_unsafe.rs‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,11 @@ unsafe fn f19<T1, T2>(a0: &(T1, T2)) -> *const T1 {
5353
unsafe fn f20<T1, T2>(a0: &(T1, T2)) -> *const T2 {
5454
&a0.1
5555
}
56+
57+
unsafe fn f21<T1, T2>(a0: &mut (T1, T2)) -> *mut T1 {
58+
&mut a0.0
59+
}
60+
61+
unsafe fn f22<T1, T2>(a0: &mut (T1, T2)) -> *mut T2 {
62+
&mut a0.1
63+
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,8 @@ fn main_0() -> i32 {
105105
Rc::new(RefCell::new((*p.borrow()).0.borrow().clone())),
106106
Rc::new(RefCell::new((*p.borrow()).1.borrow().clone())),
107107
)));
108-
let x: Ptr<Elem> = ({ get_8(__decomp_7.as_pointer()) });
109-
let y: Ptr<Elem> = ({ get_9(__decomp_7.as_pointer()) });
108+
let x: Ptr<Elem> = (*__decomp_7.borrow()).0.as_pointer();
109+
let y: Ptr<Elem> = (*__decomp_7.borrow()).1.as_pointer();
110110
assert!((copies_0.with(|rc| *rc.borrow()) == (before_copies + 2)));
111111
assert!(({ (*x.upgrade().deref()).v } == ({ (*(*p.borrow()).0.borrow()).v } + 100)));
112112
assert!(({ (*y.upgrade().deref()).v } == ({ (*(*p.borrow()).1.borrow()).v } + 100)));

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

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,27 +19,27 @@ pub fn main() {
1919
fn main_0() -> i32 {
2020
let __decomp_1: Value<(Value<i32>, Value<bool>)> =
2121
Rc::new(RefCell::new(({ make_std_pair_0(5) })));
22-
let value: Ptr<i32> = ({ get_2(__decomp_1.as_pointer()) });
23-
let positive: Ptr<bool> = ({ get_3(__decomp_1.as_pointer()) });
22+
let value: Ptr<i32> = (*__decomp_1.borrow()).0.as_pointer();
23+
let positive: Ptr<bool> = (*__decomp_1.borrow()).1.as_pointer();
2424
assert!(((value.read()) == 5));
2525
assert!(((positive.read()) as bool));
2626
let p: Value<(Value<i32>, Value<i32>)> = Rc::new(RefCell::new((
2727
Rc::new(RefCell::new(1.try_into().expect("failed conversion"))),
2828
Rc::new(RefCell::new(2.try_into().expect("failed conversion"))),
2929
)));
30-
let __decomp_4: Value<(Value<i32>, Value<i32>)> = Rc::new(RefCell::new((
30+
let __decomp_2: Value<(Value<i32>, Value<i32>)> = Rc::new(RefCell::new((
3131
Rc::new(RefCell::new((*p.borrow()).0.borrow().clone())),
3232
Rc::new(RefCell::new((*p.borrow()).1.borrow().clone())),
3333
)));
34-
let a: Ptr<i32> = ({ get_5(__decomp_4.as_pointer()) });
35-
let b: Ptr<i32> = ({ get_6(__decomp_4.as_pointer()) });
34+
let a: Ptr<i32> = (*__decomp_2.borrow()).0.as_pointer();
35+
let b: Ptr<i32> = (*__decomp_2.borrow()).1.as_pointer();
3636
a.write(10);
3737
assert!(((a.read()) == 10));
3838
assert!(((b.read()) == 2));
3939
assert!(((*(*p.borrow()).0.borrow()) == 1));
40-
let __decomp_7: Ptr<(Value<i32>, Value<i32>)> = p.as_pointer();
41-
let x: Ptr<i32> = (*__decomp_7.upgrade().deref()).0.as_pointer();
42-
let y: Ptr<i32> = (*__decomp_7.upgrade().deref()).1.as_pointer();
40+
let __decomp_3: Ptr<(Value<i32>, Value<i32>)> = p.as_pointer();
41+
let x: Ptr<i32> = (*__decomp_3.upgrade().deref()).0.as_pointer();
42+
let y: Ptr<i32> = (*__decomp_3.upgrade().deref()).1.as_pointer();
4343
x.write(3);
4444
{
4545
y.with_mut(|__v| *__v = *__v + 4)

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,8 @@ unsafe fn main_0() -> i32 {
8888
let mut p: (Elem, Elem) = (Elem::new({ 7 }).into(), Elem::new({ 8 }).into());
8989
before_copies = (*std::cell::LazyCell::force_mut(&mut *&raw mut copies_0));
9090
let mut __decomp_7: (Elem, Elem) = p.clone();
91-
let x: *mut Elem = (unsafe { get_8(&mut __decomp_7) });
92-
let y: *mut Elem = (unsafe { get_9(&mut __decomp_7) });
91+
let x: *mut Elem = &mut __decomp_7.0;
92+
let y: *mut Elem = &mut __decomp_7.1;
9393
assert!(
9494
((*std::cell::LazyCell::force_mut(&mut *&raw mut copies_0)) == ((before_copies) + (2)))
9595
);

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

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,21 @@ pub fn main() {
1717
}
1818
unsafe fn main_0() -> i32 {
1919
let mut __decomp_1: (i32, bool) = (unsafe { make_std_pair_0(5) });
20-
let value: *mut i32 = (unsafe { get_2(&mut __decomp_1) });
21-
let positive: *mut bool = (unsafe { get_3(&mut __decomp_1) });
20+
let value: *mut i32 = &mut __decomp_1.0;
21+
let positive: *mut bool = &mut __decomp_1.1;
2222
assert!(((*value) == (5)));
2323
assert!(((*positive) as bool));
2424
let mut p: (i32, i32) = (1.into(), 2.into());
25-
let mut __decomp_4: (i32, i32) = p.clone();
26-
let a: *mut i32 = (unsafe { get_5(&mut __decomp_4) });
27-
let b: *mut i32 = (unsafe { get_6(&mut __decomp_4) });
25+
let mut __decomp_2: (i32, i32) = p.clone();
26+
let a: *mut i32 = &mut __decomp_2.0;
27+
let b: *mut i32 = &mut __decomp_2.1;
2828
(*a) = 10;
2929
assert!(((*a) == (10)));
3030
assert!(((*b) == (2)));
3131
assert!(((p.0) == (1)));
32-
let __decomp_7: *mut (i32, i32) = &mut p;
33-
let x: *mut i32 = &mut (*__decomp_7).0;
34-
let y: *mut i32 = &mut (*__decomp_7).1;
32+
let __decomp_3: *mut (i32, i32) = &mut p;
33+
let x: *mut i32 = &mut (*__decomp_3).0;
34+
let y: *mut i32 = &mut (*__decomp_3).1;
3535
(*x) = 3;
3636
(*y) += 4;
3737
assert!(((p.0) == (3)));

0 commit comments

Comments
 (0)