Skip to content

Commit 87fc83d

Browse files
committed
Fix build of testsuite
1 parent cc8ebb4 commit 87fc83d

37 files changed

Lines changed: 273 additions & 195 deletions

‎cpp2rust/converter/models/converter_refcount.cpp‎

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1234,16 +1234,21 @@ bool ConverterRefCount::VisitImplicitCastExpr(clang::ImplicitCastExpr *expr) {
12341234
return Convert(sub_expr);
12351235
}
12361236
PushConversionKind push(*this, ConversionKind::Unboxed);
1237-
if (sub_expr->getType()->isPointerType() &&
1238-
sub_expr->getType()->getPointeeType()->isArrayType()) {
1239-
StrCat(std::format("({} as Ptr<{}>).to_any()",
1240-
ConvertFreshPointer(sub_expr),
1237+
auto ptr = ConvertPointer(sub_expr);
1238+
if (!isFresh()) {
1239+
StrCat(std::format("({}).to_any()", ptr));
1240+
} else if (sub_expr->getType()->isPointerType() &&
1241+
sub_expr->getType()->getPointeeType()->isArrayType()) {
1242+
StrCat(std::format("({} as Ptr<{}>).to_any()", ptr,
12411243
ToString(sub_expr->getType()
12421244
->getPointeeType()
12431245
->getAsArrayTypeUnsafe()
12441246
->getElementType())));
1247+
} else if (IsStringLiteralExpr(sub_expr)) {
1248+
StrCat(std::format("{}.to_any()", ptr));
12451249
} else {
1246-
StrCat(std::format("({}).to_any()", ConvertPointer(sub_expr)));
1250+
StrCat(std::format("({} as {}).to_any()", ptr,
1251+
ToString(sub_expr->getType())));
12471252
}
12481253
computed_expr_type_ = ComputedExprType::FreshPointer;
12491254
} else if (sub_expr->getType()->isVoidPointerType() &&

‎tests/ub/out/refcount/fd_use_after_close.rs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ fn main_0() -> i32 {
3434
let buf: Value<Box<[u8]>> = Rc::new(RefCell::new((0..4).map(|_| 0_u8).collect::<Box<[u8]>>()));
3535
let n: Value<isize> = Rc::new(RefCell::new(
3636
match FdRegistry::with_fd((*fd.borrow()), |__fd| {
37-
(buf.as_pointer() as Ptr<u8>)
37+
((buf.as_pointer() as Ptr<u8>) as Ptr<u8>)
3838
.to_any()
3939
.reinterpret_cast::<u8>()
4040
.with_slice_mut(::std::mem::size_of::<[u8; 4]>(), |__buf| {

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ pub fn main() {
2121
fn main_0() -> i32 {
2222
let a1: Value<Box<[i32]>> = Rc::new(RefCell::new(Box::new([1, 2, 3])));
2323
let vptr1: Value<AnyPtr> = Rc::new(RefCell::new({
24-
let __base = (a1.as_pointer() as Ptr<i32>)
24+
let __base = ((a1.as_pointer() as Ptr<i32>) as Ptr<i32>)
2525
.to_any()
2626
.reinterpret_cast::<u8>();
2727
let mut __lo: isize = 0;
@@ -31,7 +31,9 @@ fn main_0() -> i32 {
3131
let __mid = __lo + (__hi - __lo) / 2;
3232
let __elem = __base.offset(__mid as usize * ::std::mem::size_of::<i32>());
3333
let __r = int_cmp_0(
34-
((a1.as_pointer() as Ptr<i32>).offset(0)).to_any().clone(),
34+
(((a1.as_pointer() as Ptr<i32>).offset(0)) as Ptr<i32>)
35+
.to_any()
36+
.clone(),
3537
__elem.to_any(),
3638
);
3739
if __r == 0 {
@@ -46,7 +48,7 @@ fn main_0() -> i32 {
4648
}));
4749
assert!({
4850
let _lhs = (*vptr1.borrow()).clone();
49-
_lhs == ((a1.as_pointer() as Ptr<i32>).offset(0)).to_any()
51+
_lhs == (((a1.as_pointer() as Ptr<i32>).offset(0)) as Ptr<i32>).to_any()
5052
});
5153
return 0;
5254
}

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

Lines changed: 37 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,15 @@ pub fn test_memcpy_0() {
1111
let dst: Value<Box<[u8]>> =
1212
Rc::new(RefCell::new(Box::new([0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8])));
1313
let r: Value<AnyPtr> = Rc::new(RefCell::new({
14-
(dst.as_pointer() as Ptr<u8>)
15-
.to_any()
16-
.memcpy(&(src.as_pointer() as Ptr<u8>).to_any(), 6_usize as usize);
17-
(dst.as_pointer() as Ptr<u8>).to_any()
14+
((dst.as_pointer() as Ptr<u8>) as Ptr<u8>).to_any().memcpy(
15+
&((src.as_pointer() as Ptr<u8>) as Ptr<u8>).to_any(),
16+
6_usize as usize,
17+
);
18+
((dst.as_pointer() as Ptr<u8>) as Ptr<u8>).to_any()
1819
}));
1920
assert!({
2021
let _lhs = (*r.borrow()).clone();
21-
_lhs == (dst.as_pointer() as Ptr<u8>).to_any()
22+
_lhs == ((dst.as_pointer() as Ptr<u8>) as Ptr<u8>).to_any()
2223
});
2324
assert!(
2425
((((*dst.borrow())[(0) as usize] as i32) == (('h' as u8) as i32))
@@ -34,14 +35,14 @@ pub fn test_memcpy_0() {
3435
pub fn test_memset_1() {
3536
let buf: Value<Box<[u8]>> = Rc::new(RefCell::new((0..4).map(|_| 0_u8).collect::<Box<[u8]>>()));
3637
let r: Value<AnyPtr> = Rc::new(RefCell::new({
37-
(buf.as_pointer() as Ptr<u8>)
38+
((buf.as_pointer() as Ptr<u8>) as Ptr<u8>)
3839
.to_any()
3940
.memset((('x' as u8) as i32) as u8, 4_usize as usize);
40-
(buf.as_pointer() as Ptr<u8>).to_any()
41+
((buf.as_pointer() as Ptr<u8>) as Ptr<u8>).to_any()
4142
}));
4243
assert!({
4344
let _lhs = (*r.borrow()).clone();
44-
_lhs == (buf.as_pointer() as Ptr<u8>).to_any()
45+
_lhs == ((buf.as_pointer() as Ptr<u8>) as Ptr<u8>).to_any()
4546
});
4647
assert!(
4748
(((((*buf.borrow())[(0) as usize] as i32) == (('x' as u8) as i32))
@@ -55,21 +56,30 @@ pub fn test_memcmp_2() {
5556
let b: Value<Box<[u8]>> = Rc::new(RefCell::new(Box::new([1_u8, 2_u8, 3_u8, 4_u8])));
5657
let c: Value<Box<[u8]>> = Rc::new(RefCell::new(Box::new([1_u8, 2_u8, 9_u8, 4_u8])));
5758
assert!(
58-
((a.as_pointer() as Ptr::<u8>)
59+
(((a.as_pointer() as Ptr::<u8>) as Ptr::<u8>)
5960
.to_any()
60-
.memcmp(&(b.as_pointer() as Ptr::<u8>).to_any(), 4_usize)
61+
.memcmp(
62+
&((b.as_pointer() as Ptr::<u8>) as Ptr::<u8>).to_any(),
63+
4_usize
64+
)
6165
== 0)
6266
);
6367
assert!(
64-
((a.as_pointer() as Ptr::<u8>)
68+
(((a.as_pointer() as Ptr::<u8>) as Ptr::<u8>)
6569
.to_any()
66-
.memcmp(&(c.as_pointer() as Ptr::<u8>).to_any(), 4_usize)
70+
.memcmp(
71+
&((c.as_pointer() as Ptr::<u8>) as Ptr::<u8>).to_any(),
72+
4_usize
73+
)
6774
< 0)
6875
);
6976
assert!(
70-
((c.as_pointer() as Ptr::<u8>)
77+
(((c.as_pointer() as Ptr::<u8>) as Ptr::<u8>)
7178
.to_any()
72-
.memcmp(&(a.as_pointer() as Ptr::<u8>).to_any(), 4_usize)
79+
.memcmp(
80+
&((a.as_pointer() as Ptr::<u8>) as Ptr::<u8>).to_any(),
81+
4_usize
82+
)
7383
> 0)
7484
);
7585
}
@@ -83,14 +93,17 @@ pub fn test_memmove_3() {
8393
('\0' as u8),
8494
])));
8595
let r: Value<AnyPtr> = Rc::new(RefCell::new({
86-
((buf.as_pointer() as Ptr<u8>).offset((1) as isize))
96+
((buf.as_pointer() as Ptr<u8>).offset((1) as isize) as Ptr<u8>)
8797
.to_any()
88-
.memcpy(&(buf.as_pointer() as Ptr<u8>).to_any(), 4_usize as usize);
89-
((buf.as_pointer() as Ptr<u8>).offset((1) as isize)).to_any()
98+
.memcpy(
99+
&((buf.as_pointer() as Ptr<u8>) as Ptr<u8>).to_any(),
100+
4_usize as usize,
101+
);
102+
((buf.as_pointer() as Ptr<u8>).offset((1) as isize) as Ptr<u8>).to_any()
90103
}));
91104
assert!({
92105
let _lhs = (*r.borrow()).clone();
93-
_lhs == ((buf.as_pointer() as Ptr<u8>).offset((1) as isize)).to_any()
106+
_lhs == ((buf.as_pointer() as Ptr<u8>).offset((1) as isize) as Ptr<u8>).to_any()
94107
});
95108
assert!(
96109
((((*buf.borrow())[(0) as usize] as i32) == (('a' as u8) as i32))
@@ -398,7 +411,7 @@ pub fn test_strncmp_7() {
398411
pub fn test_memchr_8() {
399412
let data: Value<Box<[u8]>> = Rc::new(RefCell::new(Box::new([16_u8, 32_u8, 48_u8, 64_u8])));
400413
let r: Value<AnyPtr> = Rc::new(RefCell::new({
401-
let mut __p = (data.as_pointer() as Ptr<u8>)
414+
let mut __p = ((data.as_pointer() as Ptr<u8>) as Ptr<u8>)
402415
.to_any()
403416
.reinterpret_cast::<u8>();
404417
let mut __i: usize = 0;
@@ -415,11 +428,11 @@ pub fn test_memchr_8() {
415428
}));
416429
assert!({
417430
let _lhs = (*r.borrow()).clone();
418-
_lhs == ((data.as_pointer() as Ptr<u8>).offset(2)).to_any()
431+
_lhs == (((data.as_pointer() as Ptr<u8>).offset(2)) as Ptr<u8>).to_any()
419432
});
420433
assert!(
421434
({
422-
let mut __p = (data.as_pointer() as Ptr<u8>)
435+
let mut __p = ((data.as_pointer() as Ptr<u8>) as Ptr<u8>)
423436
.to_any()
424437
.reinterpret_cast::<u8>();
425438
let mut __i: usize = 0;
@@ -436,7 +449,9 @@ pub fn test_memchr_8() {
436449
})
437450
.is_null()
438451
);
439-
let p: Value<AnyPtr> = Rc::new(RefCell::new((data.as_pointer() as Ptr<u8>).to_any()));
452+
let p: Value<AnyPtr> = Rc::new(RefCell::new(
453+
((data.as_pointer() as Ptr<u8>) as Ptr<u8>).to_any(),
454+
));
440455
let n: Value<usize> = Rc::new(RefCell::new(4_usize));
441456
assert!({
442457
let _lhs = {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ fn main_0() -> i32 {
131131
let b: Value<u8> = Rc::new(RefCell::new(0_u8));
132132
assert!(
133133
(((match FdRegistry::with_fd((*fds.borrow())[(0) as usize], |__fd| {
134-
(b.as_pointer())
134+
((b.as_pointer()) as Ptr<u8>)
135135
.to_any()
136136
.reinterpret_cast::<u8>()
137137
.with_slice_mut(1_usize, |__buf| nix::unistd::read(__fd, __buf))

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ fn main_0() -> i32 {
3636
assert!(((((*fd.borrow()) >= 0) as i32) != 0));
3737
assert!(
3838
(((match FdRegistry::with_fd((*fd.borrow()), |__fd| {
39-
(Ptr::<u8>::from_string_literal(b"hello world"))
39+
Ptr::<u8>::from_string_literal(b"hello world")
4040
.to_any()
4141
.reinterpret_cast::<u8>()
4242
.with_slice(11_usize, |__buf| nix::unistd::write(__fd, __buf))
@@ -70,14 +70,14 @@ fn main_0() -> i32 {
7070
assert!(((((*fd.borrow()) >= 0) as i32) != 0));
7171
let buf: Value<Box<[u8]>> = Rc::new(RefCell::new((0..16).map(|_| 0_u8).collect::<Box<[u8]>>()));
7272
{
73-
(buf.as_pointer() as Ptr<u8>)
73+
((buf.as_pointer() as Ptr<u8>) as Ptr<u8>)
7474
.to_any()
7575
.memset((0) as u8, ::std::mem::size_of::<[u8; 16]>() as usize);
76-
(buf.as_pointer() as Ptr<u8>).to_any()
76+
((buf.as_pointer() as Ptr<u8>) as Ptr<u8>).to_any()
7777
};
7878
assert!(
7979
(((match FdRegistry::with_fd((*fd.borrow()), |__fd| {
80-
(buf.as_pointer() as Ptr<u8>)
80+
((buf.as_pointer() as Ptr<u8>) as Ptr<u8>)
8181
.to_any()
8282
.reinterpret_cast::<u8>()
8383
.with_slice_mut(::std::mem::size_of::<[u8; 16]>(), |__buf| {
@@ -111,7 +111,7 @@ fn main_0() -> i32 {
111111
);
112112
assert!(
113113
(((match FdRegistry::with_fd((*fd.borrow()), |__fd| {
114-
(buf.as_pointer() as Ptr<u8>)
114+
((buf.as_pointer() as Ptr<u8>) as Ptr<u8>)
115115
.to_any()
116116
.reinterpret_cast::<u8>()
117117
.with_slice_mut(::std::mem::size_of::<[u8; 16]>(), |__buf| {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ pub fn test_call_through_cast_5() {
8686
));
8787
let val: Value<i32> = Rc::new(RefCell::new(100));
8888
let result: Value<i32> = Rc::new(RefCell::new(
89-
({ (*gfn.borrow()).call((val.as_pointer()).to_any(), 42) }),
89+
({ (*gfn.borrow()).call(((val.as_pointer()) as Ptr<i32>).to_any(), 42) }),
9090
));
9191
assert!(((*result.borrow()) == 142));
9292
}

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

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -68,14 +68,14 @@ fn main_0() -> i32 {
6868
let buf: Value<Box<[u8]>> =
6969
Rc::new(RefCell::new((0..16).map(|_| 0_u8).collect::<Box<[u8]>>()));
7070
{
71-
(buf.as_pointer() as Ptr<u8>).to_any().memset(
71+
((buf.as_pointer() as Ptr<u8>) as Ptr<u8>).to_any().memset(
7272
(('X' as u8) as i32) as u8,
7373
::std::mem::size_of::<[u8; 16]>() as usize,
7474
);
75-
(buf.as_pointer() as Ptr<u8>).to_any()
75+
((buf.as_pointer() as Ptr<u8>) as Ptr<u8>).to_any()
7676
};
7777
let n: Value<usize> = Rc::new(RefCell::new({
78-
let __a0 = (buf.as_pointer() as Ptr<u8>).to_any();
78+
let __a0 = ((buf.as_pointer() as Ptr<u8>) as Ptr<u8>).to_any();
7979
let __a1 = 1_usize;
8080
let __a2 = 10_usize;
8181
let __a3 = (*stream.borrow()).clone();
@@ -114,16 +114,16 @@ fn main_0() -> i32 {
114114
let buf: Value<Box<[u8]>> =
115115
Rc::new(RefCell::new((0..16).map(|_| 0_u8).collect::<Box<[u8]>>()));
116116
{
117-
(buf.as_pointer() as Ptr<u8>).to_any().memset(
117+
((buf.as_pointer() as Ptr<u8>) as Ptr<u8>).to_any().memset(
118118
(('X' as u8) as i32) as u8,
119119
::std::mem::size_of::<[u8; 16]>() as usize,
120120
);
121-
(buf.as_pointer() as Ptr<u8>).to_any()
121+
((buf.as_pointer() as Ptr<u8>) as Ptr<u8>).to_any()
122122
};
123123
let n: Value<usize> = Rc::new(RefCell::new(
124124
({
125125
(*fn1.borrow()).call(
126-
(buf.as_pointer() as Ptr<u8>).to_any(),
126+
((buf.as_pointer() as Ptr<u8>) as Ptr<u8>).to_any(),
127127
1_usize,
128128
10_usize,
129129
(*stream.borrow()).clone(),
@@ -189,14 +189,14 @@ fn main_0() -> i32 {
189189
let buf: Value<Box<[u8]>> =
190190
Rc::new(RefCell::new((0..10).map(|_| 0_u8).collect::<Box<[u8]>>()));
191191
{
192-
(buf.as_pointer() as Ptr<u8>).to_any().memset(
192+
((buf.as_pointer() as Ptr<u8>) as Ptr<u8>).to_any().memset(
193193
(('Y' as u8) as i32) as u8,
194194
::std::mem::size_of::<[u8; 10]>() as usize,
195195
);
196-
(buf.as_pointer() as Ptr<u8>).to_any()
196+
((buf.as_pointer() as Ptr<u8>) as Ptr<u8>).to_any()
197197
};
198198
let n: Value<usize> = Rc::new(RefCell::new({
199-
let __a0 = (buf.as_pointer() as Ptr<u8>).to_any();
199+
let __a0 = ((buf.as_pointer() as Ptr<u8>) as Ptr<u8>).to_any();
200200
let __a1 = 1_usize;
201201
let __a2 = 10_usize;
202202
let __a3 = (*stream.borrow()).clone();
@@ -225,16 +225,16 @@ fn main_0() -> i32 {
225225
let buf: Value<Box<[u8]>> =
226226
Rc::new(RefCell::new((0..10).map(|_| 0_u8).collect::<Box<[u8]>>()));
227227
{
228-
(buf.as_pointer() as Ptr<u8>).to_any().memset(
228+
((buf.as_pointer() as Ptr<u8>) as Ptr<u8>).to_any().memset(
229229
(('Y' as u8) as i32) as u8,
230230
::std::mem::size_of::<[u8; 10]>() as usize,
231231
);
232-
(buf.as_pointer() as Ptr<u8>).to_any()
232+
((buf.as_pointer() as Ptr<u8>) as Ptr<u8>).to_any()
233233
};
234234
let n: Value<usize> = Rc::new(RefCell::new(
235235
({
236236
(*gn1.borrow()).call(
237-
(buf.as_pointer() as Ptr<u8>).to_any(),
237+
((buf.as_pointer() as Ptr<u8>) as Ptr<u8>).to_any(),
238238
1_usize,
239239
10_usize,
240240
(*stream.borrow()).clone(),

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ thread_local!(
5959
pub fn int_create_1(val: i32) -> AnyPtr {
6060
let val: Value<i32> = Rc::new(RefCell::new(val));
6161
storage_0.with(|rc| *rc.borrow_mut() = (*val.borrow()));
62-
return (storage_0.with(|v| v.as_pointer())).to_any();
62+
return ((storage_0.with(|v| v.as_pointer())) as Ptr<i32>).to_any();
6363
}
6464
pub fn int_get_2(p: AnyPtr) -> i32 {
6565
let p: Value<AnyPtr> = Rc::new(RefCell::new(p));

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ fn main_0() -> i32 {
3636
assert!(((((*fd.borrow()) >= 0) as i32) != 0));
3737
assert!(
3838
(((match FdRegistry::with_fd((*fd.borrow()), |__fd| {
39-
(Ptr::<u8>::from_string_literal(b"hello"))
39+
Ptr::<u8>::from_string_literal(b"hello")
4040
.to_any()
4141
.reinterpret_cast::<u8>()
4242
.with_slice(5_usize, |__buf| nix::unistd::write(__fd, __buf))

0 commit comments

Comments
 (0)