Skip to content

Commit 50e5deb

Browse files
committed
Add paren in ConvertUnsignedArithOperand
1 parent 4dd7b3c commit 50e5deb

13 files changed

Lines changed: 48 additions & 44 deletions

cpp2rust/converter/converter.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3527,10 +3527,12 @@ void Converter::ConvertVarInit(clang::QualType qual_type, clang::Expr *expr) {
35273527

35283528
void Converter::ConvertUnsignedArithOperand(clang::Expr *expr,
35293529
clang::QualType type) {
3530+
bool needs_cast = (expr->isIntegerConstantExpr(ctx_) &&
3531+
!clang::isa<clang::ImplicitCastExpr>(expr)) ||
3532+
Mapper::Map(expr->getType()) != Mapper::Map(type);
3533+
PushParen paren(*this, needs_cast);
35303534
Convert(expr);
3531-
if ((expr->isIntegerConstantExpr(ctx_) &&
3532-
!clang::isa<clang::ImplicitCastExpr>(expr)) ||
3533-
Mapper::Map(expr->getType()) != Mapper::Map(type)) {
3535+
if (needs_cast) {
35343536
ConvertCast(type);
35353537
}
35363538
}

tests/unit/out/refcount/memcpy_struct_struct.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,8 @@ fn main_0() -> i32 {
7777
.to_any()
7878
.memcpy(
7979
&(((table.as_pointer() as Ptr<Entry>).offset(0 as isize)) as Ptr<Entry>).to_any(),
80-
(((*table_size.borrow()) as u64).wrapping_mul(::std::mem::size_of::<Entry>() as u64)
80+
(((*table_size.borrow()) as u64)
81+
.wrapping_mul((::std::mem::size_of::<Entry>() as u64))
8182
as usize) as usize,
8283
);
8384
(((table.as_pointer() as Ptr<Entry>).offset((*table_size.borrow()) as isize)) as Ptr<Entry>)

tests/unit/out/refcount/size_t_ssize_t.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -39,23 +39,23 @@ fn main_0() -> i32 {
3939
assert!(!((*sz.borrow()) == ((*ul.borrow()) as usize)));
4040
let chain: Value<usize> = Rc::new(RefCell::new(
4141
(((((*sz.borrow()) as u64).wrapping_add((*ul.borrow()))).wrapping_add(5_u64))
42-
.wrapping_add(::std::mem::size_of::<i64>() as u64) as usize),
42+
.wrapping_add((::std::mem::size_of::<i64>() as u64)) as usize),
4343
));
4444
assert!(
4545
((*chain.borrow())
46-
== (((20 + 10) + 5) as usize).wrapping_add(::std::mem::size_of::<i64>() as usize))
46+
== (((20 + 10) + 5) as usize).wrapping_add((::std::mem::size_of::<i64>() as usize)))
4747
);
4848
let acc: Value<usize> = Rc::new(RefCell::new(100_usize));
4949
let rhs_0 =
50-
(((*acc.borrow()) as u64).wrapping_add(::std::mem::size_of::<f64>() as u64)) as usize;
50+
(((*acc.borrow()) as u64).wrapping_add((::std::mem::size_of::<f64>() as u64))) as usize;
5151
(*acc.borrow_mut()) = rhs_0;
5252
let rhs_0 = (*acc.borrow()).wrapping_mul(2_usize);
5353
(*acc.borrow_mut()) = rhs_0;
5454
let rhs_0 = (((*acc.borrow()) as u64).wrapping_sub((*ul.borrow()))) as usize;
5555
(*acc.borrow_mut()) = rhs_0;
5656
assert!(
5757
((*acc.borrow())
58-
== ((((100_usize).wrapping_add(::std::mem::size_of::<f64>() as usize)) as usize)
58+
== ((((100_usize).wrapping_add((::std::mem::size_of::<f64>() as usize))) as usize)
5959
.wrapping_mul(2_usize) as usize)
6060
.wrapping_sub(10_usize))
6161
);
@@ -65,7 +65,7 @@ fn main_0() -> i32 {
6565
let fr: Value<usize> = Rc::new(RefCell::new(
6666
({
6767
let _a: usize = ((::std::mem::size_of::<i32>() as u64)
68-
.wrapping_add((*sz.borrow()) as u64) as usize);
68+
.wrapping_add(((*sz.borrow()) as u64)) as usize);
6969
let _b: usize = ((*ul.borrow()) as usize);
7070
add_sizes_0(_a, _b)
7171
}),
@@ -99,7 +99,7 @@ fn main_0() -> i32 {
9999
let hi: Value<usize> = Rc::new(RefCell::new(
100100
({
101101
let __tmp_0: Value<u64> = Rc::new(RefCell::new(
102-
(::std::mem::size_of::<i32>() as u64).wrapping_add((*sz.borrow()) as u64),
102+
(::std::mem::size_of::<i32>() as u64).wrapping_add(((*sz.borrow()) as u64)),
103103
));
104104
(if __tmp_0.as_pointer().read() >= ul.as_pointer().read() {
105105
__tmp_0.as_pointer()
@@ -129,7 +129,7 @@ fn main_0() -> i32 {
129129
));
130130
let count: Value<usize> = Rc::new(RefCell::new(
131131
(::std::mem::size_of::<[i32; 8]>() as usize)
132-
.wrapping_div(::std::mem::size_of::<i32>() as usize),
132+
.wrapping_div((::std::mem::size_of::<i32>() as usize)),
133133
));
134134
let i: Value<usize> = Rc::new(RefCell::new(0_usize));
135135
'loop_: while ((*i.borrow()) < (*count.borrow())) {
@@ -148,12 +148,12 @@ fn main_0() -> i32 {
148148
assert!(((*total.borrow()) == 56_usize));
149149
let cond: Value<usize> = Rc::new(RefCell::new(
150150
(if ((*sz.borrow()) > ((*ul.borrow()) as usize)) {
151-
((*sz.borrow()) as u64).wrapping_add(::std::mem::size_of::<i32>() as u64)
151+
((*sz.borrow()) as u64).wrapping_add((::std::mem::size_of::<i32>() as u64))
152152
} else {
153153
(*ul.borrow())
154154
} as usize),
155155
));
156-
assert!(((*cond.borrow()) == (21_usize).wrapping_add(::std::mem::size_of::<i32>() as usize)));
156+
assert!(((*cond.borrow()) == (21_usize).wrapping_add((::std::mem::size_of::<i32>() as usize))));
157157
let arr: Value<Box<[usize]>> =
158158
Rc::new(RefCell::new(Box::new([0_usize, 1_usize, 2_usize, 3_usize])));
159159
let idx: Value<usize> = Rc::new(RefCell::new(

tests/unit/out/refcount/string_escape.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ fn main_0() -> i32 {
6161
let i: Value<i32> = Rc::new(RefCell::new(0));
6262
'loop_: while ((*i.borrow())
6363
< (((::std::mem::size_of::<[u8; 41]>() as usize)
64-
.wrapping_div(::std::mem::size_of::<u8>() as usize)) as i32))
64+
.wrapping_div((::std::mem::size_of::<u8>() as usize))) as i32))
6565
{
6666
assert!({
6767
let _lhs = (((*special.borrow()).offset((*i.borrow()) as isize).read()) as i32);

tests/unit/out/refcount/types.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ fn main_0() -> i32 {
2424
return ((((((((((((((*xu8.borrow()) as i32) + ((*xu16.borrow()) as i32)) as u32)
2525
.wrapping_add((*xu32.borrow()))) as u64)
2626
.wrapping_add((*xu64.borrow())))
27-
.wrapping_add((*xsz1.borrow()) as u64))
28-
.wrapping_add((*xsz2.borrow()) as u64))
27+
.wrapping_add(((*xsz1.borrow()) as u64)))
28+
.wrapping_add(((*xsz2.borrow()) as u64)))
2929
.wrapping_add(((*xi1.borrow()) as u64)))
3030
.wrapping_add(((*xi2.borrow()) as u64)))
3131
.wrapping_add(((*xi3.borrow()) as u64)))

tests/unit/out/unsafe/assign_as_value.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ unsafe fn main_0() -> i32 {
1616
let mut p: *mut u8 = buf.as_mut_ptr();
1717
let mut q: *mut u8 = std::ptr::null_mut();
1818
q = {
19-
p = (p).wrapping_add(1 as i32 as usize);
19+
p = (p).wrapping_add((1 as i32) as usize);
2020
p
2121
};
2222
assert!(((((q) == (buf.as_mut_ptr().offset((1) as isize))) as i32) != 0));

tests/unit/out/unsafe/malloc_realloc_free.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ unsafe fn main_0() -> i32 {
1919
(*p) = 42;
2020
assert!(((((*p) == (42)) as i32) != 0));
2121
libcc2rs::free_unsafe((p as *mut i32 as *mut ::libc::c_void));
22-
let mut arr: *mut i32 =
23-
(libcc2rs::malloc_unsafe((4_usize).wrapping_mul(::std::mem::size_of::<i32>() as usize))
24-
as *mut i32);
22+
let mut arr: *mut i32 = (libcc2rs::malloc_unsafe(
23+
(4_usize).wrapping_mul((::std::mem::size_of::<i32>() as usize)),
24+
) as *mut i32);
2525
let mut i: i32 = 0;
2626
'loop_: while ((((i) < (4)) as i32) != 0) {
2727
(*arr.offset((i) as isize)) = ((i) * (10));
@@ -30,14 +30,14 @@ unsafe fn main_0() -> i32 {
3030
assert!(((((*arr.offset((0) as isize)) == (0)) as i32) != 0));
3131
assert!(((((*arr.offset((3) as isize)) == (30)) as i32) != 0));
3232
libcc2rs::free_unsafe((arr as *mut i32 as *mut ::libc::c_void));
33-
let mut grow: *mut i32 =
34-
(libcc2rs::malloc_unsafe((2_usize).wrapping_mul(::std::mem::size_of::<i32>() as usize))
35-
as *mut i32);
33+
let mut grow: *mut i32 = (libcc2rs::malloc_unsafe(
34+
(2_usize).wrapping_mul((::std::mem::size_of::<i32>() as usize)),
35+
) as *mut i32);
3636
(*grow.offset((0) as isize)) = 1;
3737
(*grow.offset((1) as isize)) = 2;
3838
grow = (libcc2rs::realloc_unsafe(
3939
(grow as *mut i32 as *mut ::libc::c_void),
40-
(4_usize).wrapping_mul(::std::mem::size_of::<i32>() as usize),
40+
(4_usize).wrapping_mul((::std::mem::size_of::<i32>() as usize)),
4141
) as *mut i32);
4242
(*grow.offset((2) as isize)) = 3;
4343
(*grow.offset((3) as isize)) = 4;
@@ -76,7 +76,7 @@ unsafe fn main_0() -> i32 {
7676
(pfree).unwrap()(_arg0)
7777
});
7878
let mut arr: *mut i32 = ((unsafe {
79-
let _arg0: usize = (4_usize).wrapping_mul(::std::mem::size_of::<i32>() as usize);
79+
let _arg0: usize = (4_usize).wrapping_mul((::std::mem::size_of::<i32>() as usize));
8080
(pmalloc).unwrap()(_arg0)
8181
}) as *mut i32);
8282
let mut i: i32 = 0;
@@ -91,14 +91,14 @@ unsafe fn main_0() -> i32 {
9191
(pfree).unwrap()(_arg0)
9292
});
9393
let mut grow: *mut i32 = ((unsafe {
94-
let _arg0: usize = (2_usize).wrapping_mul(::std::mem::size_of::<i32>() as usize);
94+
let _arg0: usize = (2_usize).wrapping_mul((::std::mem::size_of::<i32>() as usize));
9595
(pmalloc).unwrap()(_arg0)
9696
}) as *mut i32);
9797
(*grow.offset((0) as isize)) = 1;
9898
(*grow.offset((1) as isize)) = 2;
9999
grow = ((unsafe {
100100
let _arg0: *mut ::libc::c_void = (grow as *mut i32 as *mut ::libc::c_void);
101-
let _arg1: usize = (4_usize).wrapping_mul(::std::mem::size_of::<i32>() as usize);
101+
let _arg1: usize = (4_usize).wrapping_mul((::std::mem::size_of::<i32>() as usize));
102102
(prealloc).unwrap()(_arg0, _arg1)
103103
}) as *mut i32);
104104
(*grow.offset((2) as isize)) = 3;

tests/unit/out/unsafe/memcpy_struct_struct.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,12 @@ unsafe fn main_0() -> i32 {
5454
];
5555
let mut table_size: usize = 4_usize;
5656
{
57-
if ((table_size as u64).wrapping_mul(::std::mem::size_of::<Entry>() as u64) as usize) != 0 {
57+
if ((table_size as u64).wrapping_mul((::std::mem::size_of::<Entry>() as u64)) as usize) != 0
58+
{
5859
::std::ptr::copy_nonoverlapping(
5960
((&mut table[(0) as usize] as *mut Entry) as *const Entry as *const ::libc::c_void),
6061
((&mut table[(table_size)] as *mut Entry) as *mut Entry as *mut ::libc::c_void),
61-
((table_size as u64).wrapping_mul(::std::mem::size_of::<Entry>() as u64) as usize)
62+
((table_size as u64).wrapping_mul((::std::mem::size_of::<Entry>() as u64)) as usize)
6263
as usize,
6364
)
6465
}

tests/unit/out/unsafe/pointer_usize_arith.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@ unsafe fn main_0() -> i32 {
3636
assert!(((*q2) == (10)));
3737
assert!(((q2) == (p)));
3838
let mut q3: *mut i32 = p;
39-
q3 = (q3).wrapping_add(4 as i32 as usize);
39+
q3 = (q3).wrapping_add((4 as i32) as usize);
4040
assert!(((*q3) == (14)));
41-
q3 = (q3).wrapping_sub(2 as i32 as usize);
41+
q3 = (q3).wrapping_sub((2 as i32) as usize);
4242
assert!(((*q3) == (12)));
4343
let mut step: usize = 2_usize;
4444
let mut q4: *mut i32 = p.offset((step) as isize);

tests/unit/out/unsafe/size_t_ssize_t.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,26 +31,26 @@ unsafe fn main_0() -> i32 {
3131
assert!(((ul as usize) < (sz)));
3232
assert!(!((sz) == (ul as usize)));
3333
let mut chain: usize = ((((sz as u64).wrapping_add(ul)).wrapping_add(5_u64))
34-
.wrapping_add(::std::mem::size_of::<i64>() as u64) as usize);
34+
.wrapping_add((::std::mem::size_of::<i64>() as u64)) as usize);
3535
assert!(
3636
((chain)
3737
== (((((20) + (10)) + (5)) as usize)
38-
.wrapping_add(::std::mem::size_of::<i64>() as usize)))
38+
.wrapping_add((::std::mem::size_of::<i64>() as usize))))
3939
);
4040
let mut acc: usize = 100_usize;
41-
acc = ((acc as u64).wrapping_add(::std::mem::size_of::<f64>() as u64)) as usize;
41+
acc = ((acc as u64).wrapping_add((::std::mem::size_of::<f64>() as u64))) as usize;
4242
acc = (acc).wrapping_mul(2_usize);
4343
acc = ((acc as u64).wrapping_sub(ul)) as usize;
4444
assert!(
4545
((acc)
46-
== (((((100_usize).wrapping_add(::std::mem::size_of::<f64>() as usize)) as usize)
46+
== (((((100_usize).wrapping_add((::std::mem::size_of::<f64>() as usize))) as usize)
4747
.wrapping_mul(2_usize) as usize)
4848
.wrapping_sub(10_usize)))
4949
);
5050
sz = (sz).wrapping_add(1_usize);
5151
assert!(((sz) == (21_usize)));
5252
let mut fr: usize = (unsafe {
53-
let _a: usize = ((::std::mem::size_of::<i32>() as u64).wrapping_add(sz as u64) as usize);
53+
let _a: usize = ((::std::mem::size_of::<i32>() as u64).wrapping_add((sz as u64)) as usize);
5454
let _b: usize = (ul as usize);
5555
add_sizes_0(_a, _b)
5656
});
@@ -74,7 +74,7 @@ unsafe fn main_0() -> i32 {
7474
})
7575
} as usize);
7676
let mut hi: usize = ({
77-
let mut __tmp_0 = (::std::mem::size_of::<i32>() as u64).wrapping_add(sz as u64);
77+
let mut __tmp_0 = (::std::mem::size_of::<i32>() as u64).wrapping_add((sz as u64));
7878
(*if *&mut __tmp_0 >= *&mut ul {
7979
(&mut __tmp_0) as *const _
8080
} else {
@@ -95,7 +95,7 @@ unsafe fn main_0() -> i32 {
9595
assert!(((bound) == (4_usize)));
9696
let mut data: [i32; 8] = [0_i32; 8];
9797
let mut count: usize = (::std::mem::size_of::<[i32; 8]>() as usize)
98-
.wrapping_div(::std::mem::size_of::<i32>() as usize);
98+
.wrapping_div((::std::mem::size_of::<i32>() as usize));
9999
let mut i: usize = 0_usize;
100100
'loop_: while ((i) < (count)) {
101101
data[(i)] = (((i).wrapping_mul(2_usize)) as i32);
@@ -109,11 +109,11 @@ unsafe fn main_0() -> i32 {
109109
}
110110
assert!(((total) == (56_usize)));
111111
let mut cond: usize = (if ((sz) > (ul as usize)) {
112-
(sz as u64).wrapping_add(::std::mem::size_of::<i32>() as u64)
112+
(sz as u64).wrapping_add((::std::mem::size_of::<i32>() as u64))
113113
} else {
114114
ul
115115
} as usize);
116-
assert!(((cond) == ((21_usize).wrapping_add(::std::mem::size_of::<i32>() as usize))));
116+
assert!(((cond) == ((21_usize).wrapping_add((::std::mem::size_of::<i32>() as usize)))));
117117
let mut arr: [usize; 4] = [0_usize, 1_usize, 2_usize, 3_usize];
118118
let mut idx: usize = (if ((::std::mem::size_of::<i32>()) > (2_usize)) {
119119
2

0 commit comments

Comments
 (0)