Skip to content

Commit 99c92f3

Browse files
committed
Add rules for map iterator
1 parent 7e6bd57 commit 99c92f3

3 files changed

Lines changed: 54 additions & 0 deletions

File tree

‎rules/pair/src.cpp‎

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
template <typename T1, typename T2> using t1 = std::pair<T1, T2>;
77

8+
template <typename T1, typename T2> using t2 = std::pair<const T1, T2>;
9+
810
template <typename T1, typename T2> T2 &f1(std::pair<T1, T2> &o) {
911
return o.second;
1012
}
@@ -63,3 +65,17 @@ template <typename T1, typename T2>
6365
std::pair<T1, T2> &f14(std::pair<T1, T2> &dst, std::pair<T1, T2> &&src) {
6466
return dst.operator=(std::move(src));
6567
}
68+
69+
template <typename T1, typename T2>
70+
const T1 &f15(std::pair<const T1, T2> &a0) {
71+
return a0.first;
72+
}
73+
74+
template <typename T1, typename T2> T2 &f16(std::pair<const T1, T2> &o) {
75+
return o.second;
76+
}
77+
78+
template <typename T1, typename T2>
79+
std::pair<const T1, T2> f17(const std::pair<const T1, T2> &a0) {
80+
return std::pair<const T1, T2>(a0);
81+
}

‎rules/pair/tgt_refcount.rs‎

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,13 @@ fn t1<T1: Default, T2: Default>() -> (Value<T1>, Value<T2>) {
1212
)
1313
}
1414

15+
fn t2<T1: Default, T2: Default>() -> (Value<T1>, Value<T2>) {
16+
(
17+
Rc::new(RefCell::new(T1::default())),
18+
Rc::new(RefCell::new(T2::default())),
19+
)
20+
}
21+
1522
fn f1<T1, T2>(a0: (Value<T1>, Value<T2>)) -> Value<T2> {
1623
a0.1
1724
}
@@ -89,3 +96,18 @@ fn f14<T1: Default + ByteRepr, T2: Default + ByteRepr>(
8996
) {
9097
a0.write(std::mem::take(&mut *a1))
9198
}
99+
100+
fn f15<T1, T2>(a0: (Value<T1>, Value<T2>)) -> Value<T1> {
101+
a0.0
102+
}
103+
104+
fn f16<T1, T2>(a0: (Value<T1>, Value<T2>)) -> Value<T2> {
105+
a0.1
106+
}
107+
108+
fn f17<T1: Clone, T2: Clone>(a0: (Value<T1>, Value<T2>)) -> (Value<T1>, Value<T2>) {
109+
(
110+
Rc::new(RefCell::new(a0.0.borrow().clone())),
111+
Rc::new(RefCell::new(a0.1.borrow().clone())),
112+
)
113+
}

‎rules/pair/tgt_unsafe.rs‎

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ fn t1<T1: Default, T2: Default>() -> (T1, T2) {
55
<(T1, T2)>::default()
66
}
77

8+
fn t2<T1: Default, T2: Default>() -> (T1, T2) {
9+
<(T1, T2)>::default()
10+
}
11+
812
unsafe fn f1<T1, T2>(a0: (T1, T2)) -> T2 {
913
a0.1
1014
}
@@ -45,3 +49,15 @@ unsafe fn f13<T1: Clone, T2: Clone>(a0: &mut (T1, T2), a1: (T1, T2)) {
4549
unsafe fn f14<T1: Default, T2: Default>(a0: &mut (T1, T2), a1: &mut (T1, T2)) {
4650
*a0 = std::mem::take(&mut *a1)
4751
}
52+
53+
unsafe fn f15<T1, T2>(a0: (T1, T2)) -> T1 {
54+
a0.0
55+
}
56+
57+
unsafe fn f16<T1, T2>(a0: (T1, T2)) -> T2 {
58+
a0.1
59+
}
60+
61+
unsafe fn f17<T1: Clone, T2: Clone>(a0: (T1, T2)) -> (T1, T2) {
62+
a0.clone()
63+
}

0 commit comments

Comments
 (0)