[arithmetic-side-effects] Do not ignore literal references

This commit is contained in:
Caio 2022-10-03 19:49:03 -03:00
parent e8c1b5478c
commit 2a6a98f95b
3 changed files with 103 additions and 70 deletions

View File

@ -1,8 +1,3 @@
#![allow(
// False positive
clippy::match_same_arms
)]
use super::ARITHMETIC_SIDE_EFFECTS; use super::ARITHMETIC_SIDE_EFFECTS;
use clippy_utils::{consts::constant_simple, diagnostics::span_lint}; use clippy_utils::{consts::constant_simple, diagnostics::span_lint};
use rustc_ast as ast; use rustc_ast as ast;
@ -14,12 +9,12 @@ use rustc_session::impl_lint_pass;
use rustc_span::source_map::{Span, Spanned}; use rustc_span::source_map::{Span, Spanned};
const HARD_CODED_ALLOWED: &[&str] = &[ const HARD_CODED_ALLOWED: &[&str] = &[
"&str",
"f32", "f32",
"f64", "f64",
"std::num::Saturating", "std::num::Saturating",
"std::num::Wrapping", "std::num::Wrapping",
"std::string::String", "std::string::String",
"&str",
]; ];
#[derive(Debug)] #[derive(Debug)]
@ -79,16 +74,13 @@ impl ArithmeticSideEffects {
self.expr_span = Some(expr.span); self.expr_span = Some(expr.span);
} }
/// * If `expr` is a literal integer like `1` or `i32::MAX`, returns itself. /// If `expr` does not match any variant of [LiteralIntegerTy], returns `None`.
/// * Is `expr` is a literal integer reference like `&199`, returns the literal integer without fn literal_integer<'expr, 'tcx>(expr: &'expr hir::Expr<'tcx>) -> Option<LiteralIntegerTy<'expr, 'tcx>> {
/// references.
/// * If `expr` is anything else, returns `None`.
fn literal_integer<'expr, 'tcx>(expr: &'expr hir::Expr<'tcx>) -> Option<&'expr hir::Expr<'tcx>> {
if matches!(expr.kind, hir::ExprKind::Lit(_)) { if matches!(expr.kind, hir::ExprKind::Lit(_)) {
return Some(expr); return Some(LiteralIntegerTy::Value(expr));
} }
if let hir::ExprKind::AddrOf(.., inn) = expr.kind && let hir::ExprKind::Lit(_) = inn.kind { if let hir::ExprKind::AddrOf(.., inn) = expr.kind && let hir::ExprKind::Lit(_) = inn.kind {
return Some(inn) return Some(LiteralIntegerTy::Ref(inn));
} }
None None
} }
@ -127,9 +119,10 @@ impl ArithmeticSideEffects {
let has_valid_op = if Self::is_integral(lhs_ty) && Self::is_integral(rhs_ty) { let has_valid_op = if Self::is_integral(lhs_ty) && Self::is_integral(rhs_ty) {
match (Self::literal_integer(lhs), Self::literal_integer(rhs)) { match (Self::literal_integer(lhs), Self::literal_integer(rhs)) {
(None, None) => false, (None, None) => false,
(None, Some(local_expr)) => Self::has_valid_op(op, local_expr), (None, Some(lit_int_ty)) => Self::has_valid_op(op, lit_int_ty.into()),
(Some(local_expr), None) => Self::has_valid_op(op, local_expr), (Some(lit_int_ty), None) => Self::has_valid_op(op, lit_int_ty.into()),
(Some(_), Some(_)) => true, (Some(LiteralIntegerTy::Value(_)), Some(LiteralIntegerTy::Value(_))) => true,
(Some(_), Some(_)) => false,
} }
} else { } else {
false false
@ -186,3 +179,23 @@ impl<'tcx> LateLintPass<'tcx> for ArithmeticSideEffects {
} }
} }
} }
/// Tells if an expression is a integer passed by value or by reference.
///
/// If [LiteralIntegerTy::Ref], then the contained value will be `hir::ExprKind::Lit` rather
/// than `hirExprKind::Addr`.
enum LiteralIntegerTy<'expr, 'tcx> {
/// For example, `&199`
Ref(&'expr hir::Expr<'tcx>),
/// For example, `1` or `i32::MAX`
Value(&'expr hir::Expr<'tcx>),
}
impl<'expr, 'tcx> From<LiteralIntegerTy<'expr, 'tcx>> for &'expr hir::Expr<'tcx> {
fn from(from: LiteralIntegerTy<'expr, 'tcx>) -> Self {
match from {
LiteralIntegerTy::Ref(elem) => elem,
LiteralIntegerTy::Value(elem) => elem,
}
}
}

View File

@ -148,7 +148,6 @@ pub fn non_overflowing_ops_or_ops_already_handled_by_the_compiler_should_not_tri
_n = 1 * _n; _n = 1 * _n;
_n = &1 * _n; _n = &1 * _n;
_n = 23 + 85; _n = 23 + 85;
_n = &23 + &85;
// Unary // Unary
_n = -1; _n = -1;
@ -187,6 +186,9 @@ pub fn runtime_ops() {
_n = _n * &2; _n = _n * &2;
_n = 2 * _n; _n = 2 * _n;
_n = &2 * _n; _n = &2 * _n;
_n = 23 + &85;
_n = &23 + 85;
_n = &23 + &85;
// Custom // Custom
let _ = Custom + 0; let _ = Custom + 0;

View File

@ -19,316 +19,334 @@ LL | let _ = inferred_string + "";
| ^^^^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:162:5 --> $DIR/arithmetic_side_effects.rs:161:5
| |
LL | _n += 1; LL | _n += 1;
| ^^^^^^^ | ^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:163:5 --> $DIR/arithmetic_side_effects.rs:162:5
| |
LL | _n += &1; LL | _n += &1;
| ^^^^^^^^ | ^^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:164:5 --> $DIR/arithmetic_side_effects.rs:163:5
| |
LL | _n -= 1; LL | _n -= 1;
| ^^^^^^^ | ^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:165:5 --> $DIR/arithmetic_side_effects.rs:164:5
| |
LL | _n -= &1; LL | _n -= &1;
| ^^^^^^^^ | ^^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:166:5 --> $DIR/arithmetic_side_effects.rs:165:5
| |
LL | _n /= 0; LL | _n /= 0;
| ^^^^^^^ | ^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:167:5 --> $DIR/arithmetic_side_effects.rs:166:5
| |
LL | _n /= &0; LL | _n /= &0;
| ^^^^^^^^ | ^^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:168:5 --> $DIR/arithmetic_side_effects.rs:167:5
| |
LL | _n %= 0; LL | _n %= 0;
| ^^^^^^^ | ^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:169:5 --> $DIR/arithmetic_side_effects.rs:168:5
| |
LL | _n %= &0; LL | _n %= &0;
| ^^^^^^^^ | ^^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:170:5 --> $DIR/arithmetic_side_effects.rs:169:5
| |
LL | _n *= 2; LL | _n *= 2;
| ^^^^^^^ | ^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:171:5 --> $DIR/arithmetic_side_effects.rs:170:5
| |
LL | _n *= &2; LL | _n *= &2;
| ^^^^^^^^ | ^^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:174:10 --> $DIR/arithmetic_side_effects.rs:173:10
| |
LL | _n = _n + 1; LL | _n = _n + 1;
| ^^^^^^ | ^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:175:10 --> $DIR/arithmetic_side_effects.rs:174:10
| |
LL | _n = _n + &1; LL | _n = _n + &1;
| ^^^^^^^ | ^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:176:10 --> $DIR/arithmetic_side_effects.rs:175:10
| |
LL | _n = 1 + _n; LL | _n = 1 + _n;
| ^^^^^^ | ^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:177:10 --> $DIR/arithmetic_side_effects.rs:176:10
| |
LL | _n = &1 + _n; LL | _n = &1 + _n;
| ^^^^^^^ | ^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:178:10 --> $DIR/arithmetic_side_effects.rs:177:10
| |
LL | _n = _n - 1; LL | _n = _n - 1;
| ^^^^^^ | ^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:179:10 --> $DIR/arithmetic_side_effects.rs:178:10
| |
LL | _n = _n - &1; LL | _n = _n - &1;
| ^^^^^^^ | ^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:180:10 --> $DIR/arithmetic_side_effects.rs:179:10
| |
LL | _n = 1 - _n; LL | _n = 1 - _n;
| ^^^^^^ | ^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:181:10 --> $DIR/arithmetic_side_effects.rs:180:10
| |
LL | _n = &1 - _n; LL | _n = &1 - _n;
| ^^^^^^^ | ^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:182:10 --> $DIR/arithmetic_side_effects.rs:181:10
| |
LL | _n = _n / 0; LL | _n = _n / 0;
| ^^^^^^ | ^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:183:10 --> $DIR/arithmetic_side_effects.rs:182:10
| |
LL | _n = _n / &0; LL | _n = _n / &0;
| ^^^^^^^ | ^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:184:10 --> $DIR/arithmetic_side_effects.rs:183:10
| |
LL | _n = _n % 0; LL | _n = _n % 0;
| ^^^^^^ | ^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:185:10 --> $DIR/arithmetic_side_effects.rs:184:10
| |
LL | _n = _n % &0; LL | _n = _n % &0;
| ^^^^^^^ | ^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:186:10 --> $DIR/arithmetic_side_effects.rs:185:10
| |
LL | _n = _n * 2; LL | _n = _n * 2;
| ^^^^^^ | ^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:187:10 --> $DIR/arithmetic_side_effects.rs:186:10
| |
LL | _n = _n * &2; LL | _n = _n * &2;
| ^^^^^^^ | ^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:188:10 --> $DIR/arithmetic_side_effects.rs:187:10
| |
LL | _n = 2 * _n; LL | _n = 2 * _n;
| ^^^^^^ | ^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:189:10 --> $DIR/arithmetic_side_effects.rs:188:10
| |
LL | _n = &2 * _n; LL | _n = &2 * _n;
| ^^^^^^^ | ^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:192:13 --> $DIR/arithmetic_side_effects.rs:189:10
|
LL | _n = 23 + &85;
| ^^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:190:10
|
LL | _n = &23 + 85;
| ^^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:191:10
|
LL | _n = &23 + &85;
| ^^^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:194:13
| |
LL | let _ = Custom + 0; LL | let _ = Custom + 0;
| ^^^^^^^^^^ | ^^^^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:193:13 --> $DIR/arithmetic_side_effects.rs:195:13
| |
LL | let _ = Custom + 1; LL | let _ = Custom + 1;
| ^^^^^^^^^^ | ^^^^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:194:13 --> $DIR/arithmetic_side_effects.rs:196:13
| |
LL | let _ = Custom + 2; LL | let _ = Custom + 2;
| ^^^^^^^^^^ | ^^^^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:195:13 --> $DIR/arithmetic_side_effects.rs:197:13
| |
LL | let _ = Custom + 0.0; LL | let _ = Custom + 0.0;
| ^^^^^^^^^^^^ | ^^^^^^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:196:13 --> $DIR/arithmetic_side_effects.rs:198:13
| |
LL | let _ = Custom + 1.0; LL | let _ = Custom + 1.0;
| ^^^^^^^^^^^^ | ^^^^^^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:197:13 --> $DIR/arithmetic_side_effects.rs:199:13
| |
LL | let _ = Custom + 2.0; LL | let _ = Custom + 2.0;
| ^^^^^^^^^^^^ | ^^^^^^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:198:13 --> $DIR/arithmetic_side_effects.rs:200:13
| |
LL | let _ = Custom - 0; LL | let _ = Custom - 0;
| ^^^^^^^^^^ | ^^^^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:199:13 --> $DIR/arithmetic_side_effects.rs:201:13
| |
LL | let _ = Custom - 1; LL | let _ = Custom - 1;
| ^^^^^^^^^^ | ^^^^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:200:13 --> $DIR/arithmetic_side_effects.rs:202:13
| |
LL | let _ = Custom - 2; LL | let _ = Custom - 2;
| ^^^^^^^^^^ | ^^^^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:201:13 --> $DIR/arithmetic_side_effects.rs:203:13
| |
LL | let _ = Custom - 0.0; LL | let _ = Custom - 0.0;
| ^^^^^^^^^^^^ | ^^^^^^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:202:13 --> $DIR/arithmetic_side_effects.rs:204:13
| |
LL | let _ = Custom - 1.0; LL | let _ = Custom - 1.0;
| ^^^^^^^^^^^^ | ^^^^^^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:203:13 --> $DIR/arithmetic_side_effects.rs:205:13
| |
LL | let _ = Custom - 2.0; LL | let _ = Custom - 2.0;
| ^^^^^^^^^^^^ | ^^^^^^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:204:13 --> $DIR/arithmetic_side_effects.rs:206:13
| |
LL | let _ = Custom / 0; LL | let _ = Custom / 0;
| ^^^^^^^^^^ | ^^^^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:205:13 --> $DIR/arithmetic_side_effects.rs:207:13
| |
LL | let _ = Custom / 1; LL | let _ = Custom / 1;
| ^^^^^^^^^^ | ^^^^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:206:13 --> $DIR/arithmetic_side_effects.rs:208:13
| |
LL | let _ = Custom / 2; LL | let _ = Custom / 2;
| ^^^^^^^^^^ | ^^^^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:207:13 --> $DIR/arithmetic_side_effects.rs:209:13
| |
LL | let _ = Custom / 0.0; LL | let _ = Custom / 0.0;
| ^^^^^^^^^^^^ | ^^^^^^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:208:13 --> $DIR/arithmetic_side_effects.rs:210:13
| |
LL | let _ = Custom / 1.0; LL | let _ = Custom / 1.0;
| ^^^^^^^^^^^^ | ^^^^^^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:209:13 --> $DIR/arithmetic_side_effects.rs:211:13
| |
LL | let _ = Custom / 2.0; LL | let _ = Custom / 2.0;
| ^^^^^^^^^^^^ | ^^^^^^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:210:13 --> $DIR/arithmetic_side_effects.rs:212:13
| |
LL | let _ = Custom * 0; LL | let _ = Custom * 0;
| ^^^^^^^^^^ | ^^^^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:211:13 --> $DIR/arithmetic_side_effects.rs:213:13
| |
LL | let _ = Custom * 1; LL | let _ = Custom * 1;
| ^^^^^^^^^^ | ^^^^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:212:13 --> $DIR/arithmetic_side_effects.rs:214:13
| |
LL | let _ = Custom * 2; LL | let _ = Custom * 2;
| ^^^^^^^^^^ | ^^^^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:213:13 --> $DIR/arithmetic_side_effects.rs:215:13
| |
LL | let _ = Custom * 0.0; LL | let _ = Custom * 0.0;
| ^^^^^^^^^^^^ | ^^^^^^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:214:13 --> $DIR/arithmetic_side_effects.rs:216:13
| |
LL | let _ = Custom * 1.0; LL | let _ = Custom * 1.0;
| ^^^^^^^^^^^^ | ^^^^^^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:215:13 --> $DIR/arithmetic_side_effects.rs:217:13
| |
LL | let _ = Custom * 2.0; LL | let _ = Custom * 2.0;
| ^^^^^^^^^^^^ | ^^^^^^^^^^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:218:10 --> $DIR/arithmetic_side_effects.rs:220:10
| |
LL | _n = -_n; LL | _n = -_n;
| ^^^ | ^^^
error: arithmetic operation that can potentially result in unexpected side-effects error: arithmetic operation that can potentially result in unexpected side-effects
--> $DIR/arithmetic_side_effects.rs:219:10 --> $DIR/arithmetic_side_effects.rs:221:10
| |
LL | _n = -&_n; LL | _n = -&_n;
| ^^^^ | ^^^^
error: aborting due to 55 previous errors error: aborting due to 58 previous errors