|
@@ -123,7 +123,7 @@ pub fn expression(
|
|
|
} => {
|
|
} => {
|
|
|
let l = expression(left, cfg, contract_no, func, ns, vartab, opt);
|
|
let l = expression(left, cfg, contract_no, func, ns, vartab, opt);
|
|
|
let r = expression(right, cfg, contract_no, func, ns, vartab, opt);
|
|
let r = expression(right, cfg, contract_no, func, ns, vartab, opt);
|
|
|
- if ty.is_signed_int() {
|
|
|
|
|
|
|
+ if ty.is_signed_int(ns) {
|
|
|
Expression::SignedDivide(*loc, ty.clone(), Box::new(l), Box::new(r))
|
|
Expression::SignedDivide(*loc, ty.clone(), Box::new(l), Box::new(r))
|
|
|
} else {
|
|
} else {
|
|
|
Expression::UnsignedDivide(*loc, ty.clone(), Box::new(l), Box::new(r))
|
|
Expression::UnsignedDivide(*loc, ty.clone(), Box::new(l), Box::new(r))
|
|
@@ -137,7 +137,7 @@ pub fn expression(
|
|
|
} => {
|
|
} => {
|
|
|
let l = expression(left, cfg, contract_no, func, ns, vartab, opt);
|
|
let l = expression(left, cfg, contract_no, func, ns, vartab, opt);
|
|
|
let r = expression(right, cfg, contract_no, func, ns, vartab, opt);
|
|
let r = expression(right, cfg, contract_no, func, ns, vartab, opt);
|
|
|
- if ty.is_signed_int() {
|
|
|
|
|
|
|
+ if ty.is_signed_int(ns) {
|
|
|
Expression::SignedModulo(*loc, ty.clone(), Box::new(l), Box::new(r))
|
|
Expression::SignedModulo(*loc, ty.clone(), Box::new(l), Box::new(r))
|
|
|
} else {
|
|
} else {
|
|
|
Expression::UnsignedModulo(*loc, ty.clone(), Box::new(l), Box::new(r))
|
|
Expression::UnsignedModulo(*loc, ty.clone(), Box::new(l), Box::new(r))
|
|
@@ -226,16 +226,17 @@ pub fn expression(
|
|
|
ast::Expression::More { loc, left, right } => {
|
|
ast::Expression::More { loc, left, right } => {
|
|
|
let l = expression(left, cfg, contract_no, func, ns, vartab, opt);
|
|
let l = expression(left, cfg, contract_no, func, ns, vartab, opt);
|
|
|
let r = expression(right, cfg, contract_no, func, ns, vartab, opt);
|
|
let r = expression(right, cfg, contract_no, func, ns, vartab, opt);
|
|
|
|
|
+
|
|
|
Expression::More {
|
|
Expression::More {
|
|
|
loc: *loc,
|
|
loc: *loc,
|
|
|
- signed: l.ty().is_signed_int(),
|
|
|
|
|
|
|
+ signed: l.ty().is_signed_int(ns),
|
|
|
left: Box::new(l),
|
|
left: Box::new(l),
|
|
|
right: Box::new(r),
|
|
right: Box::new(r),
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
ast::Expression::MoreEqual { loc, left, right } => Expression::MoreEqual {
|
|
ast::Expression::MoreEqual { loc, left, right } => Expression::MoreEqual {
|
|
|
loc: *loc,
|
|
loc: *loc,
|
|
|
- signed: left.ty().is_signed_int(),
|
|
|
|
|
|
|
+ signed: left.ty().is_signed_int(ns),
|
|
|
left: Box::new(expression(left, cfg, contract_no, func, ns, vartab, opt)),
|
|
left: Box::new(expression(left, cfg, contract_no, func, ns, vartab, opt)),
|
|
|
right: Box::new(expression(right, cfg, contract_no, func, ns, vartab, opt)),
|
|
right: Box::new(expression(right, cfg, contract_no, func, ns, vartab, opt)),
|
|
|
},
|
|
},
|
|
@@ -244,14 +245,14 @@ pub fn expression(
|
|
|
let r = expression(right, cfg, contract_no, func, ns, vartab, opt);
|
|
let r = expression(right, cfg, contract_no, func, ns, vartab, opt);
|
|
|
Expression::Less {
|
|
Expression::Less {
|
|
|
loc: *loc,
|
|
loc: *loc,
|
|
|
- signed: l.ty().is_signed_int(),
|
|
|
|
|
|
|
+ signed: l.ty().is_signed_int(ns),
|
|
|
left: Box::new(l),
|
|
left: Box::new(l),
|
|
|
right: Box::new(r),
|
|
right: Box::new(r),
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
ast::Expression::LessEqual { loc, left, right } => Expression::LessEqual {
|
|
ast::Expression::LessEqual { loc, left, right } => Expression::LessEqual {
|
|
|
loc: *loc,
|
|
loc: *loc,
|
|
|
- signed: left.ty().is_signed_int(),
|
|
|
|
|
|
|
+ signed: left.ty().is_signed_int(ns),
|
|
|
left: Box::new(expression(left, cfg, contract_no, func, ns, vartab, opt)),
|
|
left: Box::new(expression(left, cfg, contract_no, func, ns, vartab, opt)),
|
|
|
right: Box::new(expression(right, cfg, contract_no, func, ns, vartab, opt)),
|
|
right: Box::new(expression(right, cfg, contract_no, func, ns, vartab, opt)),
|
|
|
},
|
|
},
|