Consider type conversion that won't overflow
This commit is contained in:
parent
82d729cacb
commit
b7f921646e
3 changed files with 356 additions and 222 deletions
|
|
@ -1,4 +1,5 @@
|
|||
use super::ARITHMETIC_SIDE_EFFECTS;
|
||||
use crate::clippy_utils::res::MaybeQPath as _;
|
||||
use clippy_config::Conf;
|
||||
use clippy_utils::consts::{ConstEvalCtxt, Constant};
|
||||
use clippy_utils::diagnostics::span_lint;
|
||||
|
|
@ -6,7 +7,7 @@ use clippy_utils::res::MaybeDef;
|
|||
use clippy_utils::{expr_or_init, is_from_proc_macro, is_lint_allowed, peel_hir_expr_refs, peel_hir_expr_unary, sym};
|
||||
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
|
||||
use rustc_lint::{LateContext, LateLintPass};
|
||||
use rustc_middle::ty::{self, Ty};
|
||||
use rustc_middle::ty::{self, Ty, UintTy};
|
||||
use rustc_session::impl_lint_pass;
|
||||
use rustc_span::{Span, Symbol};
|
||||
use {rustc_ast as ast, rustc_hir as hir};
|
||||
|
|
@ -88,74 +89,16 @@ impl ArithmeticSideEffects {
|
|||
self.allowed_unary.contains(ty_string_elem)
|
||||
}
|
||||
|
||||
fn is_non_zero_u(cx: &LateContext<'_>, ty: Ty<'_>) -> bool {
|
||||
if let ty::Adt(adt, substs) = ty.kind()
|
||||
&& cx.tcx.is_diagnostic_item(sym::NonZero, adt.did())
|
||||
&& let int_type = substs.type_at(0)
|
||||
&& matches!(int_type.kind(), ty::Uint(_))
|
||||
{
|
||||
true
|
||||
} else {
|
||||
false
|
||||
}
|
||||
}
|
||||
|
||||
/// Verifies built-in types that have specific allowed operations
|
||||
fn has_specific_allowed_type_and_operation<'tcx>(
|
||||
cx: &LateContext<'tcx>,
|
||||
lhs_ty: Ty<'tcx>,
|
||||
op: hir::BinOpKind,
|
||||
rhs_ty: Ty<'tcx>,
|
||||
) -> bool {
|
||||
let is_div_or_rem = matches!(op, hir::BinOpKind::Div | hir::BinOpKind::Rem);
|
||||
let is_sat_or_wrap = |ty: Ty<'_>| ty.is_diag_item(cx, sym::Saturating) || ty.is_diag_item(cx, sym::Wrapping);
|
||||
|
||||
// If the RHS is `NonZero<u*>`, then division or module by zero will never occur.
|
||||
if Self::is_non_zero_u(cx, rhs_ty) && is_div_or_rem {
|
||||
return true;
|
||||
}
|
||||
|
||||
// `Saturation` and `Wrapping` can overflow if the RHS is zero in a division or module.
|
||||
if is_sat_or_wrap(lhs_ty) {
|
||||
return !is_div_or_rem;
|
||||
}
|
||||
|
||||
false
|
||||
}
|
||||
|
||||
// For example, 8i32 or &i64::MAX.
|
||||
fn is_integral(ty: Ty<'_>) -> bool {
|
||||
ty.peel_refs().is_integral()
|
||||
}
|
||||
|
||||
// Common entry-point to avoid code duplication.
|
||||
fn issue_lint<'tcx>(&mut self, cx: &LateContext<'tcx>, expr: &'tcx hir::Expr<'_>) {
|
||||
if is_from_proc_macro(cx, expr) {
|
||||
return;
|
||||
}
|
||||
|
||||
let msg = "arithmetic operation that can potentially result in unexpected side-effects";
|
||||
span_lint(cx, ARITHMETIC_SIDE_EFFECTS, expr.span, msg);
|
||||
self.expr_span = Some(expr.span);
|
||||
}
|
||||
|
||||
/// Returns the numeric value of a literal integer originated from `expr`, if any.
|
||||
///
|
||||
/// Literal integers can be originated from adhoc declarations like `1`, associated constants
|
||||
/// like `i32::MAX` or constant references like `N` from `const N: i32 = 1;`,
|
||||
fn literal_integer(cx: &LateContext<'_>, expr: &hir::Expr<'_>) -> Option<u128> {
|
||||
let actual = peel_hir_expr_unary(expr).0;
|
||||
if let hir::ExprKind::Lit(lit) = actual.kind
|
||||
&& let ast::LitKind::Int(n, _) = lit.node
|
||||
{
|
||||
return Some(n.get());
|
||||
}
|
||||
if let Some(Constant::Int(n)) = ConstEvalCtxt::new(cx).eval(expr) {
|
||||
return Some(n);
|
||||
}
|
||||
None
|
||||
}
|
||||
|
||||
/// Methods like `add_assign` are send to their `BinOps` references.
|
||||
fn manage_sugar_methods<'tcx>(
|
||||
&mut self,
|
||||
|
|
@ -213,59 +156,53 @@ impl ArithmeticSideEffects {
|
|||
&& let hir::ExprKind::MethodCall(method, receiver, [], _) = actual_lhs.kind
|
||||
&& method.ident.name == sym::get
|
||||
&& let receiver_ty = cx.typeck_results().expr_ty(receiver).peel_refs()
|
||||
&& Self::is_non_zero_u(cx, receiver_ty)
|
||||
&& let Some(1) = Self::literal_integer(cx, actual_rhs)
|
||||
&& is_non_zero_u(cx, receiver_ty)
|
||||
&& literal_integer(cx, actual_rhs) == Some(1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
let lhs_ty = cx.typeck_results().expr_ty(actual_lhs).peel_refs();
|
||||
let rhs_ty = cx.typeck_results().expr_ty_adjusted(actual_rhs).peel_refs();
|
||||
if self.has_allowed_binary(lhs_ty, rhs_ty) {
|
||||
if self.has_allowed_binary(lhs_ty, rhs_ty)
|
||||
| has_specific_allowed_type_and_operation(cx, lhs_ty, op, rhs_ty)
|
||||
| is_safe_due_to_smaller_source_type(cx, op, (actual_lhs, lhs_ty), actual_rhs)
|
||||
| is_safe_due_to_smaller_source_type(cx, op, (actual_rhs, rhs_ty), actual_lhs)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if Self::has_specific_allowed_type_and_operation(cx, lhs_ty, op, rhs_ty) {
|
||||
return;
|
||||
}
|
||||
|
||||
let has_valid_op = if Self::is_integral(lhs_ty) && Self::is_integral(rhs_ty) {
|
||||
if is_integer(lhs_ty) && is_integer(rhs_ty) {
|
||||
if let hir::BinOpKind::Shl | hir::BinOpKind::Shr = op {
|
||||
// At least for integers, shifts are already handled by the CTFE
|
||||
return;
|
||||
}
|
||||
match (
|
||||
Self::literal_integer(cx, actual_lhs),
|
||||
Self::literal_integer(cx, actual_rhs),
|
||||
) {
|
||||
(None, None) => false,
|
||||
match (literal_integer(cx, actual_lhs), literal_integer(cx, actual_rhs)) {
|
||||
(None, Some(n)) => match (&op, n) {
|
||||
// Division and module are always valid if applied to non-zero integers
|
||||
(hir::BinOpKind::Div | hir::BinOpKind::Rem, local_n) if local_n != 0 => true,
|
||||
(hir::BinOpKind::Div | hir::BinOpKind::Rem, local_n) if local_n != 0 => return,
|
||||
// Adding or subtracting zeros is always a no-op
|
||||
(hir::BinOpKind::Add | hir::BinOpKind::Sub, 0)
|
||||
// Multiplication by 1 or 0 will never overflow
|
||||
| (hir::BinOpKind::Mul, 0 | 1)
|
||||
=> true,
|
||||
_ => false,
|
||||
=> return,
|
||||
_ => {},
|
||||
},
|
||||
(Some(n), None) => match (&op, n) {
|
||||
// Adding or subtracting zeros is always a no-op
|
||||
(hir::BinOpKind::Add | hir::BinOpKind::Sub, 0)
|
||||
// Multiplication by 1 or 0 will never overflow
|
||||
| (hir::BinOpKind::Mul, 0 | 1)
|
||||
=> true,
|
||||
_ => false,
|
||||
},
|
||||
(Some(_), Some(_)) => {
|
||||
matches!((lhs_ref_counter, rhs_ref_counter), (0, 0))
|
||||
(Some(n), None)
|
||||
if matches!(
|
||||
(&op, n),
|
||||
// Adding or subtracting zeros is always a no-op
|
||||
(hir::BinOpKind::Add | hir::BinOpKind::Sub, 0)
|
||||
// Multiplication by 1 or 0 will never overflow
|
||||
| (hir::BinOpKind::Mul, 0 | 1)
|
||||
) =>
|
||||
{
|
||||
return;
|
||||
},
|
||||
(Some(_), Some(_)) if matches!((lhs_ref_counter, rhs_ref_counter), (0, 0)) => return,
|
||||
_ => {},
|
||||
}
|
||||
} else {
|
||||
false
|
||||
};
|
||||
if !has_valid_op {
|
||||
self.issue_lint(cx, expr);
|
||||
}
|
||||
self.issue_lint(cx, expr);
|
||||
}
|
||||
|
||||
/// There are some integer methods like `wrapping_div` that will panic depending on the
|
||||
|
|
@ -285,7 +222,7 @@ impl ArithmeticSideEffects {
|
|||
return;
|
||||
}
|
||||
let instance_ty = cx.typeck_results().expr_ty_adjusted(receiver);
|
||||
if !Self::is_integral(instance_ty) {
|
||||
if !is_integer(instance_ty) {
|
||||
return;
|
||||
}
|
||||
self.manage_sugar_methods(cx, expr, receiver, ps, arg);
|
||||
|
|
@ -293,7 +230,7 @@ impl ArithmeticSideEffects {
|
|||
return;
|
||||
}
|
||||
let (actual_arg, _) = peel_hir_expr_refs(arg);
|
||||
match Self::literal_integer(cx, actual_arg) {
|
||||
match literal_integer(cx, actual_arg) {
|
||||
None | Some(0) => self.issue_lint(cx, arg),
|
||||
Some(_) => {},
|
||||
}
|
||||
|
|
@ -317,7 +254,7 @@ impl ArithmeticSideEffects {
|
|||
return;
|
||||
}
|
||||
let actual_un_expr = peel_hir_expr_refs(un_expr).0;
|
||||
if Self::literal_integer(cx, actual_un_expr).is_some() {
|
||||
if literal_integer(cx, actual_un_expr).is_some() {
|
||||
return;
|
||||
}
|
||||
self.issue_lint(cx, expr);
|
||||
|
|
@ -385,3 +322,120 @@ impl<'tcx> LateLintPass<'tcx> for ArithmeticSideEffects {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Detects a type-casting conversion and returns the type of the original expression. For
|
||||
/// example, `let foo = u64::from(bar)`.
|
||||
fn find_original_primitive_ty<'tcx>(cx: &LateContext<'tcx>, expr: &hir::Expr<'_>) -> Option<Ty<'tcx>> {
|
||||
if let hir::ExprKind::Call(path, [arg]) = &expr.kind
|
||||
&& path.res(cx).opt_def_id().is_diag_item(&cx.tcx, sym::from_fn)
|
||||
{
|
||||
Some(cx.typeck_results().expr_ty(arg))
|
||||
} else {
|
||||
None
|
||||
}
|
||||
}
|
||||
|
||||
/// Verifies built-in types that have specific allowed operations
|
||||
fn has_specific_allowed_type_and_operation<'tcx>(
|
||||
cx: &LateContext<'tcx>,
|
||||
lhs_ty: Ty<'tcx>,
|
||||
op: hir::BinOpKind,
|
||||
rhs_ty: Ty<'tcx>,
|
||||
) -> bool {
|
||||
let is_div_or_rem = matches!(op, hir::BinOpKind::Div | hir::BinOpKind::Rem);
|
||||
let is_sat_or_wrap = |ty: Ty<'_>| matches!(ty.opt_diag_name(cx), Some(sym::Saturating | sym::Wrapping));
|
||||
|
||||
// If the RHS is `NonZero<u*>`, then division or module by zero will never occur.
|
||||
if is_non_zero_u(cx, rhs_ty) && is_div_or_rem {
|
||||
return true;
|
||||
}
|
||||
|
||||
// `Saturation` and `Wrapping` can overflow if the RHS is zero in a division or module.
|
||||
if is_sat_or_wrap(lhs_ty) {
|
||||
return !is_div_or_rem;
|
||||
}
|
||||
|
||||
false
|
||||
}
|
||||
|
||||
// For example, `i8` or `u128` and possible associated references like `&&u16`.
|
||||
fn is_integer(ty: Ty<'_>) -> bool {
|
||||
ty.peel_refs().is_integral()
|
||||
}
|
||||
|
||||
fn is_non_zero_u(cx: &LateContext<'_>, ty: Ty<'_>) -> bool {
|
||||
if let ty::Adt(adt, substs) = ty.kind()
|
||||
&& cx.tcx.is_diagnostic_item(sym::NonZero, adt.did())
|
||||
&& let int_type = substs.type_at(0)
|
||||
&& matches!(int_type.kind(), ty::Uint(_))
|
||||
{
|
||||
true
|
||||
} else {
|
||||
false
|
||||
}
|
||||
}
|
||||
|
||||
/// If one side is a literal it is possible to evaluate overflows as long as the other side has a
|
||||
/// smaller type. `0` and `1` suffixes indicate different sides.
|
||||
///
|
||||
/// For example, `1000u64 + u64::from(some_runtime_variable_of_type_u8)`.
|
||||
fn is_safe_due_to_smaller_source_type(
|
||||
cx: &LateContext<'_>,
|
||||
op: hir::BinOpKind,
|
||||
(expr0, ty0): (&hir::Expr<'_>, Ty<'_>),
|
||||
expr1: &hir::Expr<'_>,
|
||||
) -> bool {
|
||||
let Some(num0) = literal_integer(cx, expr0) else {
|
||||
return false;
|
||||
};
|
||||
let Some(orig_ty1) = find_original_primitive_ty(cx, expr1) else {
|
||||
return false;
|
||||
};
|
||||
let Some(num1) = max_int_num(orig_ty1) else {
|
||||
return false;
|
||||
};
|
||||
let Some(rslt) = (match op {
|
||||
hir::BinOpKind::Add => num0.checked_add(num1),
|
||||
hir::BinOpKind::Mul => num0.checked_mul(num1),
|
||||
_ => None,
|
||||
}) else {
|
||||
return false;
|
||||
};
|
||||
match ty0.peel_refs().kind() {
|
||||
ty::Uint(UintTy::U16) => u16::try_from(rslt).is_ok(),
|
||||
ty::Uint(UintTy::U32) => u32::try_from(rslt).is_ok(),
|
||||
ty::Uint(UintTy::U64) => u64::try_from(rslt).is_ok(),
|
||||
ty::Uint(UintTy::U128) => true,
|
||||
ty::Uint(UintTy::Usize) => usize::try_from(rslt).is_ok(),
|
||||
_ => false,
|
||||
}
|
||||
}
|
||||
|
||||
/// Returns the numeric value of a literal integer originated from `expr`, if any.
|
||||
///
|
||||
/// Literal integers can be originated from adhoc declarations like `1`, associated constants
|
||||
/// like `i32::MAX` or constant references like `N` from `const N: i32 = 1;`,
|
||||
fn literal_integer(cx: &LateContext<'_>, expr: &hir::Expr<'_>) -> Option<u128> {
|
||||
let actual = peel_hir_expr_unary(expr).0;
|
||||
if let hir::ExprKind::Lit(lit) = actual.kind
|
||||
&& let ast::LitKind::Int(n, _) = lit.node
|
||||
{
|
||||
return Some(n.get());
|
||||
}
|
||||
if let Some(Constant::Int(n)) = ConstEvalCtxt::new(cx).eval(expr) {
|
||||
return Some(n);
|
||||
}
|
||||
None
|
||||
}
|
||||
|
||||
fn max_int_num(ty: Ty<'_>) -> Option<u128> {
|
||||
match ty.peel_refs().kind() {
|
||||
ty::Uint(UintTy::U8) => Some(u8::MAX.into()),
|
||||
ty::Uint(UintTy::U16) => Some(u16::MAX.into()),
|
||||
ty::Uint(UintTy::U32) => Some(u32::MAX.into()),
|
||||
ty::Uint(UintTy::U64) => Some(u64::MAX.into()),
|
||||
ty::Uint(UintTy::U128) => Some(u128::MAX),
|
||||
ty::Uint(UintTy::Usize) => usize::MAX.try_into().ok(),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
extern crate proc_macro_derive;
|
||||
|
||||
use core::num::{NonZero, Saturating, Wrapping};
|
||||
use core::time::Duration;
|
||||
|
||||
const ONE: i32 = 1;
|
||||
const ZERO: i32 = 0;
|
||||
|
|
@ -687,4 +688,59 @@ pub fn explicit_methods() {
|
|||
//~^ arithmetic_side_effects
|
||||
}
|
||||
|
||||
pub fn issue_15943(days: u8) -> Duration {
|
||||
Duration::from_secs(86400 * u64::from(days))
|
||||
}
|
||||
|
||||
pub fn type_conversion_add() {
|
||||
let _ = u128::MAX + u128::from(1u8);
|
||||
//~^ arithmetic_side_effects
|
||||
let _ = 1u128 + u128::from(1u16);
|
||||
let _ = 1u128 + u128::from(1u32);
|
||||
let _ = 1u128 + u128::from(1u64);
|
||||
|
||||
let _ = 1u64 + u64::from(1u8);
|
||||
let _ = 1u64 + u64::from(1u16);
|
||||
let _ = 1u64 + u64::from(1u32);
|
||||
|
||||
let _ = 1u32 + u32::from(1u8);
|
||||
let _ = 1u32 + u32::from(1u16);
|
||||
|
||||
let _ = 1u16 + u16::from(1u8);
|
||||
}
|
||||
|
||||
pub fn type_conversion_mul() {
|
||||
let _ = u128::MAX * u128::from(1u8);
|
||||
//~^ arithmetic_side_effects
|
||||
let _ = 1u128 * u128::from(1u16);
|
||||
let _ = 1u128 * u128::from(1u32);
|
||||
let _ = 1u128 * u128::from(1u64);
|
||||
|
||||
let _ = 1u64 * u64::from(1u8);
|
||||
let _ = 1u64 * u64::from(1u16);
|
||||
let _ = 1u64 * u64::from(1u32);
|
||||
|
||||
let _ = 1u32 * u32::from(1u8);
|
||||
let _ = 1u32 * u32::from(1u16);
|
||||
|
||||
let _ = 1u16 * u16::from(1u8);
|
||||
}
|
||||
|
||||
pub fn type_conversion_does_not_escape_its_context() {
|
||||
struct Foo;
|
||||
impl Foo {
|
||||
fn from(n: u8) -> u64 {
|
||||
u64::from(n)
|
||||
}
|
||||
}
|
||||
let _ = Duration::from_secs(86400 * Foo::from(1));
|
||||
//~^ arithmetic_side_effects
|
||||
|
||||
fn shift(x: u8) -> u64 {
|
||||
1 << u64::from(x)
|
||||
}
|
||||
let _ = Duration::from_secs(86400 * shift(1));
|
||||
//~^ arithmetic_side_effects
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:166:13
|
||||
--> tests/ui/arithmetic_side_effects.rs:167:13
|
||||
|
|
||||
LL | let _ = 1f16 + 1f16;
|
||||
| ^^^^^^^^^^^
|
||||
|
|
@ -8,766 +8,790 @@ LL | let _ = 1f16 + 1f16;
|
|||
= help: to override `-D warnings` add `#[allow(clippy::arithmetic_side_effects)]`
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:170:13
|
||||
--> tests/ui/arithmetic_side_effects.rs:171:13
|
||||
|
|
||||
LL | let _ = 1f128 + 1f128;
|
||||
| ^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:175:13
|
||||
--> tests/ui/arithmetic_side_effects.rs:176:13
|
||||
|
|
||||
LL | let _ = String::new() + &String::new();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:311:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:312:5
|
||||
|
|
||||
LL | _n += 1;
|
||||
| ^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:313:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:314:5
|
||||
|
|
||||
LL | _n += &1;
|
||||
| ^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:315:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:316:5
|
||||
|
|
||||
LL | _n -= 1;
|
||||
| ^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:317:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:318:5
|
||||
|
|
||||
LL | _n -= &1;
|
||||
| ^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:319:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:320:5
|
||||
|
|
||||
LL | _n /= 0;
|
||||
| ^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:321:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:322:5
|
||||
|
|
||||
LL | _n /= &0;
|
||||
| ^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:323:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:324:5
|
||||
|
|
||||
LL | _n %= 0;
|
||||
| ^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:325:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:326:5
|
||||
|
|
||||
LL | _n %= &0;
|
||||
| ^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:327:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:328:5
|
||||
|
|
||||
LL | _n *= 2;
|
||||
| ^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:329:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:330:5
|
||||
|
|
||||
LL | _n *= &2;
|
||||
| ^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:331:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:332:5
|
||||
|
|
||||
LL | _n += -1;
|
||||
| ^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:333:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:334:5
|
||||
|
|
||||
LL | _n += &-1;
|
||||
| ^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:335:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:336:5
|
||||
|
|
||||
LL | _n -= -1;
|
||||
| ^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:337:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:338:5
|
||||
|
|
||||
LL | _n -= &-1;
|
||||
| ^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:339:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:340:5
|
||||
|
|
||||
LL | _n /= -0;
|
||||
| ^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:341:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:342:5
|
||||
|
|
||||
LL | _n /= &-0;
|
||||
| ^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:343:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:344:5
|
||||
|
|
||||
LL | _n %= -0;
|
||||
| ^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:345:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:346:5
|
||||
|
|
||||
LL | _n %= &-0;
|
||||
| ^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:347:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:348:5
|
||||
|
|
||||
LL | _n *= -2;
|
||||
| ^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:349:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:350:5
|
||||
|
|
||||
LL | _n *= &-2;
|
||||
| ^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:351:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:352:5
|
||||
|
|
||||
LL | _custom += Custom;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:353:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:354:5
|
||||
|
|
||||
LL | _custom += &Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:355:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:356:5
|
||||
|
|
||||
LL | _custom -= Custom;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:357:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:358:5
|
||||
|
|
||||
LL | _custom -= &Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:359:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:360:5
|
||||
|
|
||||
LL | _custom /= Custom;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:361:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:362:5
|
||||
|
|
||||
LL | _custom /= &Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:363:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:364:5
|
||||
|
|
||||
LL | _custom %= Custom;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:365:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:366:5
|
||||
|
|
||||
LL | _custom %= &Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:367:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:368:5
|
||||
|
|
||||
LL | _custom *= Custom;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:369:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:370:5
|
||||
|
|
||||
LL | _custom *= &Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:371:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:372:5
|
||||
|
|
||||
LL | _custom >>= Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:373:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:374:5
|
||||
|
|
||||
LL | _custom >>= &Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:375:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:376:5
|
||||
|
|
||||
LL | _custom <<= Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:377:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:378:5
|
||||
|
|
||||
LL | _custom <<= &Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:379:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:380:5
|
||||
|
|
||||
LL | _custom += -Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:381:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:382:5
|
||||
|
|
||||
LL | _custom += &-Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:383:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:384:5
|
||||
|
|
||||
LL | _custom -= -Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:385:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:386:5
|
||||
|
|
||||
LL | _custom -= &-Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:387:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:388:5
|
||||
|
|
||||
LL | _custom /= -Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:389:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:390:5
|
||||
|
|
||||
LL | _custom /= &-Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:391:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:392:5
|
||||
|
|
||||
LL | _custom %= -Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:393:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:394:5
|
||||
|
|
||||
LL | _custom %= &-Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:395:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:396:5
|
||||
|
|
||||
LL | _custom *= -Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:397:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:398:5
|
||||
|
|
||||
LL | _custom *= &-Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:399:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:400:5
|
||||
|
|
||||
LL | _custom >>= -Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:401:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:402:5
|
||||
|
|
||||
LL | _custom >>= &-Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:403:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:404:5
|
||||
|
|
||||
LL | _custom <<= -Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:405:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:406:5
|
||||
|
|
||||
LL | _custom <<= &-Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:409:10
|
||||
--> tests/ui/arithmetic_side_effects.rs:410:10
|
||||
|
|
||||
LL | _n = _n + 1;
|
||||
| ^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:411:10
|
||||
--> tests/ui/arithmetic_side_effects.rs:412:10
|
||||
|
|
||||
LL | _n = _n + &1;
|
||||
| ^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:413:10
|
||||
--> tests/ui/arithmetic_side_effects.rs:414:10
|
||||
|
|
||||
LL | _n = 1 + _n;
|
||||
| ^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:415:10
|
||||
--> tests/ui/arithmetic_side_effects.rs:416:10
|
||||
|
|
||||
LL | _n = &1 + _n;
|
||||
| ^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:417:10
|
||||
--> tests/ui/arithmetic_side_effects.rs:418:10
|
||||
|
|
||||
LL | _n = _n - 1;
|
||||
| ^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:419:10
|
||||
--> tests/ui/arithmetic_side_effects.rs:420:10
|
||||
|
|
||||
LL | _n = _n - &1;
|
||||
| ^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:421:10
|
||||
--> tests/ui/arithmetic_side_effects.rs:422:10
|
||||
|
|
||||
LL | _n = 1 - _n;
|
||||
| ^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:423:10
|
||||
--> tests/ui/arithmetic_side_effects.rs:424:10
|
||||
|
|
||||
LL | _n = &1 - _n;
|
||||
| ^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:425:10
|
||||
--> tests/ui/arithmetic_side_effects.rs:426:10
|
||||
|
|
||||
LL | _n = _n / 0;
|
||||
| ^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:427:10
|
||||
--> tests/ui/arithmetic_side_effects.rs:428:10
|
||||
|
|
||||
LL | _n = _n / &0;
|
||||
| ^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:429:10
|
||||
--> tests/ui/arithmetic_side_effects.rs:430:10
|
||||
|
|
||||
LL | _n = _n % 0;
|
||||
| ^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:431:10
|
||||
--> tests/ui/arithmetic_side_effects.rs:432:10
|
||||
|
|
||||
LL | _n = _n % &0;
|
||||
| ^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:433:10
|
||||
--> tests/ui/arithmetic_side_effects.rs:434:10
|
||||
|
|
||||
LL | _n = _n * 2;
|
||||
| ^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:435:10
|
||||
--> tests/ui/arithmetic_side_effects.rs:436:10
|
||||
|
|
||||
LL | _n = _n * &2;
|
||||
| ^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:437:10
|
||||
--> tests/ui/arithmetic_side_effects.rs:438:10
|
||||
|
|
||||
LL | _n = 2 * _n;
|
||||
| ^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:439:10
|
||||
--> tests/ui/arithmetic_side_effects.rs:440:10
|
||||
|
|
||||
LL | _n = &2 * _n;
|
||||
| ^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:441:10
|
||||
--> tests/ui/arithmetic_side_effects.rs:442:10
|
||||
|
|
||||
LL | _n = 23 + &85;
|
||||
| ^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:443:10
|
||||
--> tests/ui/arithmetic_side_effects.rs:444:10
|
||||
|
|
||||
LL | _n = &23 + 85;
|
||||
| ^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:445:10
|
||||
--> tests/ui/arithmetic_side_effects.rs:446:10
|
||||
|
|
||||
LL | _n = &23 + &85;
|
||||
| ^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:447:15
|
||||
--> tests/ui/arithmetic_side_effects.rs:448:15
|
||||
|
|
||||
LL | _custom = _custom + _custom;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:449:15
|
||||
--> tests/ui/arithmetic_side_effects.rs:450:15
|
||||
|
|
||||
LL | _custom = _custom + &_custom;
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:451:15
|
||||
--> tests/ui/arithmetic_side_effects.rs:452:15
|
||||
|
|
||||
LL | _custom = Custom + _custom;
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:453:15
|
||||
--> tests/ui/arithmetic_side_effects.rs:454:15
|
||||
|
|
||||
LL | _custom = &Custom + _custom;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:455:15
|
||||
--> tests/ui/arithmetic_side_effects.rs:456:15
|
||||
|
|
||||
LL | _custom = _custom - Custom;
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:457:15
|
||||
--> tests/ui/arithmetic_side_effects.rs:458:15
|
||||
|
|
||||
LL | _custom = _custom - &Custom;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:459:15
|
||||
--> tests/ui/arithmetic_side_effects.rs:460:15
|
||||
|
|
||||
LL | _custom = Custom - _custom;
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:461:15
|
||||
--> tests/ui/arithmetic_side_effects.rs:462:15
|
||||
|
|
||||
LL | _custom = &Custom - _custom;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:463:15
|
||||
--> tests/ui/arithmetic_side_effects.rs:464:15
|
||||
|
|
||||
LL | _custom = _custom / Custom;
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:465:15
|
||||
--> tests/ui/arithmetic_side_effects.rs:466:15
|
||||
|
|
||||
LL | _custom = _custom / &Custom;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:467:15
|
||||
--> tests/ui/arithmetic_side_effects.rs:468:15
|
||||
|
|
||||
LL | _custom = _custom % Custom;
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:469:15
|
||||
--> tests/ui/arithmetic_side_effects.rs:470:15
|
||||
|
|
||||
LL | _custom = _custom % &Custom;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:471:15
|
||||
--> tests/ui/arithmetic_side_effects.rs:472:15
|
||||
|
|
||||
LL | _custom = _custom * Custom;
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:473:15
|
||||
--> tests/ui/arithmetic_side_effects.rs:474:15
|
||||
|
|
||||
LL | _custom = _custom * &Custom;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:475:15
|
||||
--> tests/ui/arithmetic_side_effects.rs:476:15
|
||||
|
|
||||
LL | _custom = Custom * _custom;
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:477:15
|
||||
--> tests/ui/arithmetic_side_effects.rs:478:15
|
||||
|
|
||||
LL | _custom = &Custom * _custom;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:479:15
|
||||
--> tests/ui/arithmetic_side_effects.rs:480:15
|
||||
|
|
||||
LL | _custom = Custom + &Custom;
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:481:15
|
||||
--> tests/ui/arithmetic_side_effects.rs:482:15
|
||||
|
|
||||
LL | _custom = &Custom + Custom;
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:483:15
|
||||
--> tests/ui/arithmetic_side_effects.rs:484:15
|
||||
|
|
||||
LL | _custom = &Custom + &Custom;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:485:15
|
||||
--> tests/ui/arithmetic_side_effects.rs:486:15
|
||||
|
|
||||
LL | _custom = _custom >> _custom;
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:487:15
|
||||
--> tests/ui/arithmetic_side_effects.rs:488:15
|
||||
|
|
||||
LL | _custom = _custom >> &_custom;
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:489:15
|
||||
--> tests/ui/arithmetic_side_effects.rs:490:15
|
||||
|
|
||||
LL | _custom = Custom << _custom;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:491:15
|
||||
--> tests/ui/arithmetic_side_effects.rs:492:15
|
||||
|
|
||||
LL | _custom = &Custom << _custom;
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:495:23
|
||||
--> tests/ui/arithmetic_side_effects.rs:496:23
|
||||
|
|
||||
LL | _n.saturating_div(0);
|
||||
| ^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:497:21
|
||||
--> tests/ui/arithmetic_side_effects.rs:498:21
|
||||
|
|
||||
LL | _n.wrapping_div(0);
|
||||
| ^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:499:21
|
||||
--> tests/ui/arithmetic_side_effects.rs:500:21
|
||||
|
|
||||
LL | _n.wrapping_rem(0);
|
||||
| ^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:501:28
|
||||
--> tests/ui/arithmetic_side_effects.rs:502:28
|
||||
|
|
||||
LL | _n.wrapping_rem_euclid(0);
|
||||
| ^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:504:23
|
||||
--> tests/ui/arithmetic_side_effects.rs:505:23
|
||||
|
|
||||
LL | _n.saturating_div(_n);
|
||||
| ^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:506:21
|
||||
--> tests/ui/arithmetic_side_effects.rs:507:21
|
||||
|
|
||||
LL | _n.wrapping_div(_n);
|
||||
| ^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:508:21
|
||||
--> tests/ui/arithmetic_side_effects.rs:509:21
|
||||
|
|
||||
LL | _n.wrapping_rem(_n);
|
||||
| ^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:510:28
|
||||
--> tests/ui/arithmetic_side_effects.rs:511:28
|
||||
|
|
||||
LL | _n.wrapping_rem_euclid(_n);
|
||||
| ^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:513:23
|
||||
--> tests/ui/arithmetic_side_effects.rs:514:23
|
||||
|
|
||||
LL | _n.saturating_div(*Box::new(_n));
|
||||
| ^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:517:10
|
||||
--> tests/ui/arithmetic_side_effects.rs:518:10
|
||||
|
|
||||
LL | _n = -_n;
|
||||
| ^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:519:10
|
||||
--> tests/ui/arithmetic_side_effects.rs:520:10
|
||||
|
|
||||
LL | _n = -&_n;
|
||||
| ^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:521:15
|
||||
--> tests/ui/arithmetic_side_effects.rs:522:15
|
||||
|
|
||||
LL | _custom = -_custom;
|
||||
| ^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:523:15
|
||||
--> tests/ui/arithmetic_side_effects.rs:524:15
|
||||
|
|
||||
LL | _custom = -&_custom;
|
||||
| ^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:525:9
|
||||
--> tests/ui/arithmetic_side_effects.rs:526:9
|
||||
|
|
||||
LL | _ = -*Box::new(_n);
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:535:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:536:5
|
||||
|
|
||||
LL | 1 + i;
|
||||
| ^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:537:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:538:5
|
||||
|
|
||||
LL | i * 2;
|
||||
| ^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:539:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:540:5
|
||||
|
|
||||
LL | 1 % i / 2;
|
||||
| ^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:541:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:542:5
|
||||
|
|
||||
LL | i - 2 + 2 - i;
|
||||
| ^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:543:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:544:5
|
||||
|
|
||||
LL | -i;
|
||||
| ^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:555:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:556:5
|
||||
|
|
||||
LL | i += 1;
|
||||
| ^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:557:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:558:5
|
||||
|
|
||||
LL | i -= 1;
|
||||
| ^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:559:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:560:5
|
||||
|
|
||||
LL | i *= 2;
|
||||
| ^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:562:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:563:5
|
||||
|
|
||||
LL | i /= 0;
|
||||
| ^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:565:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:566:5
|
||||
|
|
||||
LL | i /= var1;
|
||||
| ^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:567:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:568:5
|
||||
|
|
||||
LL | i /= var2;
|
||||
| ^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:570:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:571:5
|
||||
|
|
||||
LL | i %= 0;
|
||||
| ^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:573:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:574:5
|
||||
|
|
||||
LL | i %= var1;
|
||||
| ^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:575:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:576:5
|
||||
|
|
||||
LL | i %= var2;
|
||||
| ^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:586:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:587:5
|
||||
|
|
||||
LL | 10 / a
|
||||
| ^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:641:9
|
||||
--> tests/ui/arithmetic_side_effects.rs:642:9
|
||||
|
|
||||
LL | x / maybe_zero
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:646:9
|
||||
--> tests/ui/arithmetic_side_effects.rs:647:9
|
||||
|
|
||||
LL | x % maybe_zero
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:658:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:659:5
|
||||
|
|
||||
LL | one.add_assign(1);
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:663:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:664:5
|
||||
|
|
||||
LL | one.sub_assign(1);
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:684:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:685:5
|
||||
|
|
||||
LL | one.add(&one);
|
||||
| ^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:686:5
|
||||
--> tests/ui/arithmetic_side_effects.rs:687:5
|
||||
|
|
||||
LL | Box::new(one).add(one);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to 128 previous errors
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:696:13
|
||||
|
|
||||
LL | let _ = u128::MAX + u128::from(1u8);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:713:13
|
||||
|
|
||||
LL | let _ = u128::MAX * u128::from(1u8);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:736:33
|
||||
|
|
||||
LL | let _ = Duration::from_secs(86400 * Foo::from(1));
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> tests/ui/arithmetic_side_effects.rs:742:33
|
||||
|
|
||||
LL | let _ = Duration::from_secs(86400 * shift(1));
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to 132 previous errors
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue