Auto merge of #10203 - c410-f3r:macro-lint, r=giraffate
Suppress the triggering of some lints in derived structures Fixes #10185 Fixes #10417 For `integer_arithmetic`, `arithmetic_side_effects` and `shadow_reuse`. * ~~Not sure how to test these use-cases so feel free to point any method or any related PR.~~ --- changelog: FP: [`integer_arithmetic`], [`arithmetic_side_effects`]: No longer lint inside proc macros [#10203](https://github.com/rust-lang/rust-clippy/pull/10203) <!-- changelog_checked -->
This commit is contained in:
commit
f1a552ccec
@ -1,4 +1,5 @@
|
||||
use super::ARITHMETIC_SIDE_EFFECTS;
|
||||
use clippy_utils::is_from_proc_macro;
|
||||
use clippy_utils::{
|
||||
consts::{constant, constant_simple, Constant},
|
||||
diagnostics::span_lint,
|
||||
@ -206,8 +207,9 @@ impl ArithmeticSideEffects {
|
||||
self.issue_lint(cx, expr);
|
||||
}
|
||||
|
||||
fn should_skip_expr(&mut self, cx: &LateContext<'_>, expr: &hir::Expr<'_>) -> bool {
|
||||
fn should_skip_expr<'tcx>(&mut self, cx: &LateContext<'tcx>, expr: &hir::Expr<'tcx>) -> bool {
|
||||
is_lint_allowed(cx, ARITHMETIC_SIDE_EFFECTS, expr.hir_id)
|
||||
|| is_from_proc_macro(cx, expr)
|
||||
|| self.expr_span.is_some()
|
||||
|| self.const_span.map_or(false, |sp| sp.contains(expr.span))
|
||||
}
|
||||
|
@ -1,12 +1,12 @@
|
||||
use super::{FLOAT_ARITHMETIC, INTEGER_ARITHMETIC};
|
||||
use clippy_utils::consts::constant_simple;
|
||||
use clippy_utils::diagnostics::span_lint;
|
||||
use clippy_utils::is_from_proc_macro;
|
||||
use clippy_utils::is_integer_literal;
|
||||
use rustc_hir as hir;
|
||||
use rustc_lint::LateContext;
|
||||
use rustc_span::source_map::Span;
|
||||
|
||||
use super::{FLOAT_ARITHMETIC, INTEGER_ARITHMETIC};
|
||||
|
||||
#[derive(Default)]
|
||||
pub struct Context {
|
||||
expr_id: Option<hir::HirId>,
|
||||
@ -47,6 +47,9 @@ impl Context {
|
||||
|
||||
let (l_ty, r_ty) = (cx.typeck_results().expr_ty(l), cx.typeck_results().expr_ty(r));
|
||||
if l_ty.peel_refs().is_integral() && r_ty.peel_refs().is_integral() {
|
||||
if is_from_proc_macro(cx, expr) {
|
||||
return;
|
||||
}
|
||||
match op {
|
||||
hir::BinOpKind::Div | hir::BinOpKind::Rem => match &r.kind {
|
||||
hir::ExprKind::Lit(_lit) => (),
|
||||
@ -79,6 +82,9 @@ impl Context {
|
||||
let ty = cx.typeck_results().expr_ty(arg);
|
||||
if constant_simple(cx, cx.typeck_results(), expr).is_none() {
|
||||
if ty.is_integral() {
|
||||
if is_from_proc_macro(cx, expr) {
|
||||
return;
|
||||
}
|
||||
span_lint(cx, INTEGER_ARITHMETIC, expr.span, "integer arithmetic detected");
|
||||
self.expr_id = Some(expr.hir_id);
|
||||
} else if ty.is_floating_point() {
|
||||
|
@ -1,3 +1,5 @@
|
||||
// aux-build:proc_macro_derive.rs
|
||||
|
||||
#![allow(
|
||||
clippy::assign_op_pattern,
|
||||
clippy::erasing_op,
|
||||
@ -11,6 +13,8 @@
|
||||
#![feature(const_mut_refs, inline_const, saturating_int_impl)]
|
||||
#![warn(clippy::arithmetic_side_effects)]
|
||||
|
||||
extern crate proc_macro_derive;
|
||||
|
||||
use core::num::{Saturating, Wrapping};
|
||||
|
||||
const ONE: i32 = 1;
|
||||
@ -19,6 +23,9 @@ const ZERO: i32 = 0;
|
||||
#[derive(Clone, Copy)]
|
||||
pub struct Custom;
|
||||
|
||||
#[derive(proc_macro_derive::ShadowDerive)]
|
||||
pub struct Nothing;
|
||||
|
||||
macro_rules! impl_arith {
|
||||
( $( $_trait:ident, $lhs:ty, $rhs:ty, $method:ident; )* ) => {
|
||||
$(
|
||||
|
@ -1,5 +1,5 @@
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:286:5
|
||||
--> $DIR/arithmetic_side_effects.rs:293:5
|
||||
|
|
||||
LL | _n += 1;
|
||||
| ^^^^^^^
|
||||
@ -7,649 +7,649 @@ LL | _n += 1;
|
||||
= note: `-D clippy::arithmetic-side-effects` implied by `-D warnings`
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:287:5
|
||||
--> $DIR/arithmetic_side_effects.rs:294:5
|
||||
|
|
||||
LL | _n += &1;
|
||||
| ^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:288:5
|
||||
--> $DIR/arithmetic_side_effects.rs:295:5
|
||||
|
|
||||
LL | _n -= 1;
|
||||
| ^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:289:5
|
||||
--> $DIR/arithmetic_side_effects.rs:296:5
|
||||
|
|
||||
LL | _n -= &1;
|
||||
| ^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:290:5
|
||||
--> $DIR/arithmetic_side_effects.rs:297:5
|
||||
|
|
||||
LL | _n /= 0;
|
||||
| ^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:291:5
|
||||
--> $DIR/arithmetic_side_effects.rs:298:5
|
||||
|
|
||||
LL | _n /= &0;
|
||||
| ^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:292:5
|
||||
--> $DIR/arithmetic_side_effects.rs:299:5
|
||||
|
|
||||
LL | _n %= 0;
|
||||
| ^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:293:5
|
||||
--> $DIR/arithmetic_side_effects.rs:300:5
|
||||
|
|
||||
LL | _n %= &0;
|
||||
| ^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:294:5
|
||||
--> $DIR/arithmetic_side_effects.rs:301:5
|
||||
|
|
||||
LL | _n *= 2;
|
||||
| ^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:295:5
|
||||
--> $DIR/arithmetic_side_effects.rs:302:5
|
||||
|
|
||||
LL | _n *= &2;
|
||||
| ^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:296:5
|
||||
--> $DIR/arithmetic_side_effects.rs:303:5
|
||||
|
|
||||
LL | _n += -1;
|
||||
| ^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:297:5
|
||||
--> $DIR/arithmetic_side_effects.rs:304:5
|
||||
|
|
||||
LL | _n += &-1;
|
||||
| ^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:298:5
|
||||
--> $DIR/arithmetic_side_effects.rs:305:5
|
||||
|
|
||||
LL | _n -= -1;
|
||||
| ^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:299:5
|
||||
--> $DIR/arithmetic_side_effects.rs:306:5
|
||||
|
|
||||
LL | _n -= &-1;
|
||||
| ^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:300:5
|
||||
--> $DIR/arithmetic_side_effects.rs:307:5
|
||||
|
|
||||
LL | _n /= -0;
|
||||
| ^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:301:5
|
||||
--> $DIR/arithmetic_side_effects.rs:308:5
|
||||
|
|
||||
LL | _n /= &-0;
|
||||
| ^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:302:5
|
||||
--> $DIR/arithmetic_side_effects.rs:309:5
|
||||
|
|
||||
LL | _n %= -0;
|
||||
| ^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:303:5
|
||||
--> $DIR/arithmetic_side_effects.rs:310:5
|
||||
|
|
||||
LL | _n %= &-0;
|
||||
| ^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:304:5
|
||||
--> $DIR/arithmetic_side_effects.rs:311:5
|
||||
|
|
||||
LL | _n *= -2;
|
||||
| ^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:305:5
|
||||
--> $DIR/arithmetic_side_effects.rs:312:5
|
||||
|
|
||||
LL | _n *= &-2;
|
||||
| ^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:306:5
|
||||
--> $DIR/arithmetic_side_effects.rs:313:5
|
||||
|
|
||||
LL | _custom += Custom;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:307:5
|
||||
--> $DIR/arithmetic_side_effects.rs:314:5
|
||||
|
|
||||
LL | _custom += &Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:308:5
|
||||
--> $DIR/arithmetic_side_effects.rs:315:5
|
||||
|
|
||||
LL | _custom -= Custom;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:309:5
|
||||
--> $DIR/arithmetic_side_effects.rs:316:5
|
||||
|
|
||||
LL | _custom -= &Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:310:5
|
||||
--> $DIR/arithmetic_side_effects.rs:317:5
|
||||
|
|
||||
LL | _custom /= Custom;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:311:5
|
||||
--> $DIR/arithmetic_side_effects.rs:318:5
|
||||
|
|
||||
LL | _custom /= &Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:312:5
|
||||
--> $DIR/arithmetic_side_effects.rs:319:5
|
||||
|
|
||||
LL | _custom %= Custom;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:313:5
|
||||
--> $DIR/arithmetic_side_effects.rs:320:5
|
||||
|
|
||||
LL | _custom %= &Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:314:5
|
||||
--> $DIR/arithmetic_side_effects.rs:321:5
|
||||
|
|
||||
LL | _custom *= Custom;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:315:5
|
||||
--> $DIR/arithmetic_side_effects.rs:322:5
|
||||
|
|
||||
LL | _custom *= &Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:316:5
|
||||
--> $DIR/arithmetic_side_effects.rs:323:5
|
||||
|
|
||||
LL | _custom >>= Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:317:5
|
||||
--> $DIR/arithmetic_side_effects.rs:324:5
|
||||
|
|
||||
LL | _custom >>= &Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:318:5
|
||||
--> $DIR/arithmetic_side_effects.rs:325:5
|
||||
|
|
||||
LL | _custom <<= Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:319:5
|
||||
--> $DIR/arithmetic_side_effects.rs:326:5
|
||||
|
|
||||
LL | _custom <<= &Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:320:5
|
||||
--> $DIR/arithmetic_side_effects.rs:327:5
|
||||
|
|
||||
LL | _custom += -Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:321:5
|
||||
--> $DIR/arithmetic_side_effects.rs:328:5
|
||||
|
|
||||
LL | _custom += &-Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:322:5
|
||||
--> $DIR/arithmetic_side_effects.rs:329:5
|
||||
|
|
||||
LL | _custom -= -Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:323:5
|
||||
--> $DIR/arithmetic_side_effects.rs:330:5
|
||||
|
|
||||
LL | _custom -= &-Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:324:5
|
||||
--> $DIR/arithmetic_side_effects.rs:331:5
|
||||
|
|
||||
LL | _custom /= -Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:325:5
|
||||
--> $DIR/arithmetic_side_effects.rs:332:5
|
||||
|
|
||||
LL | _custom /= &-Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:326:5
|
||||
--> $DIR/arithmetic_side_effects.rs:333:5
|
||||
|
|
||||
LL | _custom %= -Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:327:5
|
||||
--> $DIR/arithmetic_side_effects.rs:334:5
|
||||
|
|
||||
LL | _custom %= &-Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:328:5
|
||||
--> $DIR/arithmetic_side_effects.rs:335:5
|
||||
|
|
||||
LL | _custom *= -Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:329:5
|
||||
--> $DIR/arithmetic_side_effects.rs:336:5
|
||||
|
|
||||
LL | _custom *= &-Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:330:5
|
||||
--> $DIR/arithmetic_side_effects.rs:337:5
|
||||
|
|
||||
LL | _custom >>= -Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:331:5
|
||||
--> $DIR/arithmetic_side_effects.rs:338:5
|
||||
|
|
||||
LL | _custom >>= &-Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:332:5
|
||||
--> $DIR/arithmetic_side_effects.rs:339:5
|
||||
|
|
||||
LL | _custom <<= -Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:333:5
|
||||
--> $DIR/arithmetic_side_effects.rs:340:5
|
||||
|
|
||||
LL | _custom <<= &-Custom;
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:336:10
|
||||
--> $DIR/arithmetic_side_effects.rs:343:10
|
||||
|
|
||||
LL | _n = _n + 1;
|
||||
| ^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:337:10
|
||||
--> $DIR/arithmetic_side_effects.rs:344:10
|
||||
|
|
||||
LL | _n = _n + &1;
|
||||
| ^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:338:10
|
||||
--> $DIR/arithmetic_side_effects.rs:345:10
|
||||
|
|
||||
LL | _n = 1 + _n;
|
||||
| ^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:339:10
|
||||
--> $DIR/arithmetic_side_effects.rs:346:10
|
||||
|
|
||||
LL | _n = &1 + _n;
|
||||
| ^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:340:10
|
||||
--> $DIR/arithmetic_side_effects.rs:347:10
|
||||
|
|
||||
LL | _n = _n - 1;
|
||||
| ^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:341:10
|
||||
--> $DIR/arithmetic_side_effects.rs:348:10
|
||||
|
|
||||
LL | _n = _n - &1;
|
||||
| ^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:342:10
|
||||
--> $DIR/arithmetic_side_effects.rs:349:10
|
||||
|
|
||||
LL | _n = 1 - _n;
|
||||
| ^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:343:10
|
||||
--> $DIR/arithmetic_side_effects.rs:350:10
|
||||
|
|
||||
LL | _n = &1 - _n;
|
||||
| ^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:344:10
|
||||
--> $DIR/arithmetic_side_effects.rs:351:10
|
||||
|
|
||||
LL | _n = _n / 0;
|
||||
| ^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:345:10
|
||||
--> $DIR/arithmetic_side_effects.rs:352:10
|
||||
|
|
||||
LL | _n = _n / &0;
|
||||
| ^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:346:10
|
||||
--> $DIR/arithmetic_side_effects.rs:353:10
|
||||
|
|
||||
LL | _n = _n % 0;
|
||||
| ^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:347:10
|
||||
--> $DIR/arithmetic_side_effects.rs:354:10
|
||||
|
|
||||
LL | _n = _n % &0;
|
||||
| ^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:348:10
|
||||
--> $DIR/arithmetic_side_effects.rs:355:10
|
||||
|
|
||||
LL | _n = _n * 2;
|
||||
| ^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:349:10
|
||||
--> $DIR/arithmetic_side_effects.rs:356:10
|
||||
|
|
||||
LL | _n = _n * &2;
|
||||
| ^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:350:10
|
||||
--> $DIR/arithmetic_side_effects.rs:357:10
|
||||
|
|
||||
LL | _n = 2 * _n;
|
||||
| ^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:351:10
|
||||
--> $DIR/arithmetic_side_effects.rs:358:10
|
||||
|
|
||||
LL | _n = &2 * _n;
|
||||
| ^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:352:10
|
||||
--> $DIR/arithmetic_side_effects.rs:359:10
|
||||
|
|
||||
LL | _n = 23 + &85;
|
||||
| ^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:353:10
|
||||
--> $DIR/arithmetic_side_effects.rs:360:10
|
||||
|
|
||||
LL | _n = &23 + 85;
|
||||
| ^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:354:10
|
||||
--> $DIR/arithmetic_side_effects.rs:361:10
|
||||
|
|
||||
LL | _n = &23 + &85;
|
||||
| ^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:355:15
|
||||
--> $DIR/arithmetic_side_effects.rs:362:15
|
||||
|
|
||||
LL | _custom = _custom + _custom;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:356:15
|
||||
--> $DIR/arithmetic_side_effects.rs:363:15
|
||||
|
|
||||
LL | _custom = _custom + &_custom;
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:357:15
|
||||
--> $DIR/arithmetic_side_effects.rs:364:15
|
||||
|
|
||||
LL | _custom = Custom + _custom;
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:358:15
|
||||
--> $DIR/arithmetic_side_effects.rs:365:15
|
||||
|
|
||||
LL | _custom = &Custom + _custom;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:359:15
|
||||
--> $DIR/arithmetic_side_effects.rs:366:15
|
||||
|
|
||||
LL | _custom = _custom - Custom;
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:360:15
|
||||
--> $DIR/arithmetic_side_effects.rs:367:15
|
||||
|
|
||||
LL | _custom = _custom - &Custom;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:361:15
|
||||
--> $DIR/arithmetic_side_effects.rs:368:15
|
||||
|
|
||||
LL | _custom = Custom - _custom;
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:362:15
|
||||
--> $DIR/arithmetic_side_effects.rs:369:15
|
||||
|
|
||||
LL | _custom = &Custom - _custom;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:363:15
|
||||
--> $DIR/arithmetic_side_effects.rs:370:15
|
||||
|
|
||||
LL | _custom = _custom / Custom;
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:364:15
|
||||
--> $DIR/arithmetic_side_effects.rs:371:15
|
||||
|
|
||||
LL | _custom = _custom / &Custom;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:365:15
|
||||
--> $DIR/arithmetic_side_effects.rs:372:15
|
||||
|
|
||||
LL | _custom = _custom % Custom;
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:366:15
|
||||
--> $DIR/arithmetic_side_effects.rs:373:15
|
||||
|
|
||||
LL | _custom = _custom % &Custom;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:367:15
|
||||
--> $DIR/arithmetic_side_effects.rs:374:15
|
||||
|
|
||||
LL | _custom = _custom * Custom;
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:368:15
|
||||
--> $DIR/arithmetic_side_effects.rs:375:15
|
||||
|
|
||||
LL | _custom = _custom * &Custom;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:369:15
|
||||
--> $DIR/arithmetic_side_effects.rs:376:15
|
||||
|
|
||||
LL | _custom = Custom * _custom;
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:370:15
|
||||
--> $DIR/arithmetic_side_effects.rs:377:15
|
||||
|
|
||||
LL | _custom = &Custom * _custom;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:371:15
|
||||
--> $DIR/arithmetic_side_effects.rs:378:15
|
||||
|
|
||||
LL | _custom = Custom + &Custom;
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:372:15
|
||||
--> $DIR/arithmetic_side_effects.rs:379:15
|
||||
|
|
||||
LL | _custom = &Custom + Custom;
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:373:15
|
||||
--> $DIR/arithmetic_side_effects.rs:380:15
|
||||
|
|
||||
LL | _custom = &Custom + &Custom;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:374:15
|
||||
--> $DIR/arithmetic_side_effects.rs:381:15
|
||||
|
|
||||
LL | _custom = _custom >> _custom;
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:375:15
|
||||
--> $DIR/arithmetic_side_effects.rs:382:15
|
||||
|
|
||||
LL | _custom = _custom >> &_custom;
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:376:15
|
||||
--> $DIR/arithmetic_side_effects.rs:383:15
|
||||
|
|
||||
LL | _custom = Custom << _custom;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:377:15
|
||||
--> $DIR/arithmetic_side_effects.rs:384:15
|
||||
|
|
||||
LL | _custom = &Custom << _custom;
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:380:10
|
||||
--> $DIR/arithmetic_side_effects.rs:387:10
|
||||
|
|
||||
LL | _n = -_n;
|
||||
| ^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:381:10
|
||||
--> $DIR/arithmetic_side_effects.rs:388:10
|
||||
|
|
||||
LL | _n = -&_n;
|
||||
| ^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:382:15
|
||||
--> $DIR/arithmetic_side_effects.rs:389:15
|
||||
|
|
||||
LL | _custom = -_custom;
|
||||
| ^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:383:15
|
||||
--> $DIR/arithmetic_side_effects.rs:390:15
|
||||
|
|
||||
LL | _custom = -&_custom;
|
||||
| ^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:392:5
|
||||
--> $DIR/arithmetic_side_effects.rs:399:5
|
||||
|
|
||||
LL | 1 + i;
|
||||
| ^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:393:5
|
||||
--> $DIR/arithmetic_side_effects.rs:400:5
|
||||
|
|
||||
LL | i * 2;
|
||||
| ^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:394:5
|
||||
--> $DIR/arithmetic_side_effects.rs:401:5
|
||||
|
|
||||
LL | 1 % i / 2;
|
||||
| ^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:395:5
|
||||
--> $DIR/arithmetic_side_effects.rs:402:5
|
||||
|
|
||||
LL | i - 2 + 2 - i;
|
||||
| ^^^^^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:396:5
|
||||
--> $DIR/arithmetic_side_effects.rs:403:5
|
||||
|
|
||||
LL | -i;
|
||||
| ^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:407:5
|
||||
--> $DIR/arithmetic_side_effects.rs:414:5
|
||||
|
|
||||
LL | i += 1;
|
||||
| ^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:408:5
|
||||
--> $DIR/arithmetic_side_effects.rs:415:5
|
||||
|
|
||||
LL | i -= 1;
|
||||
| ^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:409:5
|
||||
--> $DIR/arithmetic_side_effects.rs:416:5
|
||||
|
|
||||
LL | i *= 2;
|
||||
| ^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:411:5
|
||||
--> $DIR/arithmetic_side_effects.rs:418:5
|
||||
|
|
||||
LL | i /= 0;
|
||||
| ^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:413:5
|
||||
--> $DIR/arithmetic_side_effects.rs:420:5
|
||||
|
|
||||
LL | i /= var1;
|
||||
| ^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:414:5
|
||||
--> $DIR/arithmetic_side_effects.rs:421:5
|
||||
|
|
||||
LL | i /= var2;
|
||||
| ^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:416:5
|
||||
--> $DIR/arithmetic_side_effects.rs:423:5
|
||||
|
|
||||
LL | i %= 0;
|
||||
| ^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:418:5
|
||||
--> $DIR/arithmetic_side_effects.rs:425:5
|
||||
|
|
||||
LL | i %= var1;
|
||||
| ^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:419:5
|
||||
--> $DIR/arithmetic_side_effects.rs:426:5
|
||||
|
|
||||
LL | i %= var2;
|
||||
| ^^^^^^^^^
|
||||
|
||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||
--> $DIR/arithmetic_side_effects.rs:429:5
|
||||
--> $DIR/arithmetic_side_effects.rs:436:5
|
||||
|
|
||||
LL | 10 / a
|
||||
| ^^^^^^
|
||||
|
@ -9,7 +9,7 @@
|
||||
|
||||
extern crate proc_macro;
|
||||
|
||||
use proc_macro::{quote, TokenStream};
|
||||
use proc_macro::{quote, Delimiter, Group, Ident, Literal, Punct, Spacing, Span, TokenStream, TokenTree};
|
||||
|
||||
#[proc_macro_derive(DeriveSomething)]
|
||||
pub fn derive(_: TokenStream) -> TokenStream {
|
||||
@ -86,3 +86,74 @@ pub fn extra_lifetime(_input: TokenStream) -> TokenStream {
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
#[allow(unused)]
|
||||
#[proc_macro_derive(ArithmeticDerive)]
|
||||
pub fn arithmetic_derive(_: TokenStream) -> TokenStream {
|
||||
<TokenStream as FromIterator<TokenTree>>::from_iter(
|
||||
[
|
||||
Ident::new("fn", Span::call_site()).into(),
|
||||
Ident::new("_foo", Span::call_site()).into(),
|
||||
Group::new(Delimiter::Parenthesis, TokenStream::new()).into(),
|
||||
Group::new(
|
||||
Delimiter::Brace,
|
||||
<TokenStream as FromIterator<TokenTree>>::from_iter(
|
||||
[
|
||||
Ident::new("let", Span::call_site()).into(),
|
||||
Ident::new("mut", Span::call_site()).into(),
|
||||
Ident::new("_n", Span::call_site()).into(),
|
||||
Punct::new('=', Spacing::Alone).into(),
|
||||
Literal::i32_unsuffixed(9).into(),
|
||||
Punct::new(';', Spacing::Alone).into(),
|
||||
Ident::new("_n", Span::call_site()).into(),
|
||||
Punct::new('=', Spacing::Alone).into(),
|
||||
Literal::i32_unsuffixed(9).into(),
|
||||
Punct::new('/', Spacing::Alone).into(),
|
||||
Literal::i32_unsuffixed(2).into(),
|
||||
Punct::new(';', Spacing::Alone).into(),
|
||||
Ident::new("_n", Span::call_site()).into(),
|
||||
Punct::new('=', Spacing::Alone).into(),
|
||||
Punct::new('-', Spacing::Alone).into(),
|
||||
Ident::new("_n", Span::call_site()).into(),
|
||||
Punct::new(';', Spacing::Alone).into(),
|
||||
]
|
||||
.into_iter(),
|
||||
),
|
||||
)
|
||||
.into(),
|
||||
]
|
||||
.into_iter(),
|
||||
)
|
||||
}
|
||||
|
||||
#[allow(unused)]
|
||||
#[proc_macro_derive(ShadowDerive)]
|
||||
pub fn shadow_derive(_: TokenStream) -> TokenStream {
|
||||
<TokenStream as FromIterator<TokenTree>>::from_iter(
|
||||
[
|
||||
Ident::new("fn", Span::call_site()).into(),
|
||||
Ident::new("_foo", Span::call_site()).into(),
|
||||
Group::new(Delimiter::Parenthesis, TokenStream::new()).into(),
|
||||
Group::new(
|
||||
Delimiter::Brace,
|
||||
<TokenStream as FromIterator<TokenTree>>::from_iter(
|
||||
[
|
||||
Ident::new("let", Span::call_site()).into(),
|
||||
Ident::new("_x", Span::call_site()).into(),
|
||||
Punct::new('=', Spacing::Alone).into(),
|
||||
Literal::i32_unsuffixed(2).into(),
|
||||
Punct::new(';', Spacing::Alone).into(),
|
||||
Ident::new("let", Span::call_site()).into(),
|
||||
Ident::new("_x", Span::call_site()).into(),
|
||||
Punct::new('=', Spacing::Alone).into(),
|
||||
Ident::new("_x", Span::call_site()).into(),
|
||||
Punct::new(';', Spacing::Alone).into(),
|
||||
]
|
||||
.into_iter(),
|
||||
),
|
||||
)
|
||||
.into(),
|
||||
]
|
||||
.into_iter(),
|
||||
)
|
||||
}
|
||||
|
@ -1,6 +1,13 @@
|
||||
// aux-build:proc_macro_derive.rs
|
||||
|
||||
#![warn(clippy::integer_arithmetic, clippy::float_arithmetic)]
|
||||
#![allow(clippy::no_effect, clippy::unnecessary_operation, clippy::op_ref)]
|
||||
|
||||
extern crate proc_macro_derive;
|
||||
|
||||
#[derive(proc_macro_derive::ShadowDerive)]
|
||||
pub struct Nothing;
|
||||
|
||||
#[rustfmt::skip]
|
||||
fn main() {
|
||||
let mut i = 1i32;
|
||||
|
@ -1,5 +1,5 @@
|
||||
error: this operation will panic at runtime
|
||||
--> $DIR/integer_arithmetic.rs:30:5
|
||||
--> $DIR/integer_arithmetic.rs:37:5
|
||||
|
|
||||
LL | i /= 0;
|
||||
| ^^^^^^ attempt to divide `_` by zero
|
||||
@ -7,13 +7,13 @@ LL | i /= 0;
|
||||
= note: `#[deny(unconditional_panic)]` on by default
|
||||
|
||||
error: this operation will panic at runtime
|
||||
--> $DIR/integer_arithmetic.rs:35:5
|
||||
--> $DIR/integer_arithmetic.rs:42:5
|
||||
|
|
||||
LL | i %= 0;
|
||||
| ^^^^^^ attempt to calculate the remainder of `_` with a divisor of zero
|
||||
|
||||
error: integer arithmetic detected
|
||||
--> $DIR/integer_arithmetic.rs:9:5
|
||||
--> $DIR/integer_arithmetic.rs:16:5
|
||||
|
|
||||
LL | 1 + i;
|
||||
| ^^^^^
|
||||
@ -21,146 +21,146 @@ LL | 1 + i;
|
||||
= note: `-D clippy::integer-arithmetic` implied by `-D warnings`
|
||||
|
||||
error: integer arithmetic detected
|
||||
--> $DIR/integer_arithmetic.rs:10:5
|
||||
--> $DIR/integer_arithmetic.rs:17:5
|
||||
|
|
||||
LL | i * 2;
|
||||
| ^^^^^
|
||||
|
||||
error: integer arithmetic detected
|
||||
--> $DIR/integer_arithmetic.rs:11:5
|
||||
--> $DIR/integer_arithmetic.rs:18:5
|
||||
|
|
||||
LL | / 1 %
|
||||
LL | | i / 2; // no error, this is part of the expression in the preceding line
|
||||
| |_____^
|
||||
|
||||
error: integer arithmetic detected
|
||||
--> $DIR/integer_arithmetic.rs:13:5
|
||||
--> $DIR/integer_arithmetic.rs:20:5
|
||||
|
|
||||
LL | i - 2 + 2 - i;
|
||||
| ^^^^^^^^^^^^^
|
||||
|
||||
error: integer arithmetic detected
|
||||
--> $DIR/integer_arithmetic.rs:14:5
|
||||
--> $DIR/integer_arithmetic.rs:21:5
|
||||
|
|
||||
LL | -i;
|
||||
| ^^
|
||||
|
||||
error: integer arithmetic detected
|
||||
--> $DIR/integer_arithmetic.rs:15:5
|
||||
--> $DIR/integer_arithmetic.rs:22:5
|
||||
|
|
||||
LL | i >> 1;
|
||||
| ^^^^^^
|
||||
|
||||
error: integer arithmetic detected
|
||||
--> $DIR/integer_arithmetic.rs:16:5
|
||||
--> $DIR/integer_arithmetic.rs:23:5
|
||||
|
|
||||
LL | i << 1;
|
||||
| ^^^^^^
|
||||
|
||||
error: integer arithmetic detected
|
||||
--> $DIR/integer_arithmetic.rs:26:5
|
||||
--> $DIR/integer_arithmetic.rs:33:5
|
||||
|
|
||||
LL | i += 1;
|
||||
| ^^^^^^
|
||||
|
||||
error: integer arithmetic detected
|
||||
--> $DIR/integer_arithmetic.rs:27:5
|
||||
--> $DIR/integer_arithmetic.rs:34:5
|
||||
|
|
||||
LL | i -= 1;
|
||||
| ^^^^^^
|
||||
|
||||
error: integer arithmetic detected
|
||||
--> $DIR/integer_arithmetic.rs:28:5
|
||||
--> $DIR/integer_arithmetic.rs:35:5
|
||||
|
|
||||
LL | i *= 2;
|
||||
| ^^^^^^
|
||||
|
||||
error: integer arithmetic detected
|
||||
--> $DIR/integer_arithmetic.rs:31:11
|
||||
--> $DIR/integer_arithmetic.rs:38:11
|
||||
|
|
||||
LL | i /= -1;
|
||||
| ^
|
||||
|
||||
error: integer arithmetic detected
|
||||
--> $DIR/integer_arithmetic.rs:32:5
|
||||
--> $DIR/integer_arithmetic.rs:39:5
|
||||
|
|
||||
LL | i /= var1;
|
||||
| ^^^^^^^^^
|
||||
|
||||
error: integer arithmetic detected
|
||||
--> $DIR/integer_arithmetic.rs:33:5
|
||||
--> $DIR/integer_arithmetic.rs:40:5
|
||||
|
|
||||
LL | i /= var2;
|
||||
| ^^^^^^^^^
|
||||
|
||||
error: integer arithmetic detected
|
||||
--> $DIR/integer_arithmetic.rs:36:11
|
||||
--> $DIR/integer_arithmetic.rs:43:11
|
||||
|
|
||||
LL | i %= -1;
|
||||
| ^
|
||||
|
||||
error: integer arithmetic detected
|
||||
--> $DIR/integer_arithmetic.rs:37:5
|
||||
--> $DIR/integer_arithmetic.rs:44:5
|
||||
|
|
||||
LL | i %= var1;
|
||||
| ^^^^^^^^^
|
||||
|
||||
error: integer arithmetic detected
|
||||
--> $DIR/integer_arithmetic.rs:38:5
|
||||
--> $DIR/integer_arithmetic.rs:45:5
|
||||
|
|
||||
LL | i %= var2;
|
||||
| ^^^^^^^^^
|
||||
|
||||
error: integer arithmetic detected
|
||||
--> $DIR/integer_arithmetic.rs:39:5
|
||||
--> $DIR/integer_arithmetic.rs:46:5
|
||||
|
|
||||
LL | i <<= 3;
|
||||
| ^^^^^^^
|
||||
|
||||
error: integer arithmetic detected
|
||||
--> $DIR/integer_arithmetic.rs:40:5
|
||||
--> $DIR/integer_arithmetic.rs:47:5
|
||||
|
|
||||
LL | i >>= 2;
|
||||
| ^^^^^^^
|
||||
|
||||
error: integer arithmetic detected
|
||||
--> $DIR/integer_arithmetic.rs:82:5
|
||||
--> $DIR/integer_arithmetic.rs:89:5
|
||||
|
|
||||
LL | 3 + &1;
|
||||
| ^^^^^^
|
||||
|
||||
error: integer arithmetic detected
|
||||
--> $DIR/integer_arithmetic.rs:83:5
|
||||
--> $DIR/integer_arithmetic.rs:90:5
|
||||
|
|
||||
LL | &3 + 1;
|
||||
| ^^^^^^
|
||||
|
||||
error: integer arithmetic detected
|
||||
--> $DIR/integer_arithmetic.rs:84:5
|
||||
--> $DIR/integer_arithmetic.rs:91:5
|
||||
|
|
||||
LL | &3 + &1;
|
||||
| ^^^^^^^
|
||||
|
||||
error: integer arithmetic detected
|
||||
--> $DIR/integer_arithmetic.rs:89:5
|
||||
--> $DIR/integer_arithmetic.rs:96:5
|
||||
|
|
||||
LL | a + x
|
||||
| ^^^^^
|
||||
|
||||
error: integer arithmetic detected
|
||||
--> $DIR/integer_arithmetic.rs:93:5
|
||||
--> $DIR/integer_arithmetic.rs:100:5
|
||||
|
|
||||
LL | x + y
|
||||
| ^^^^^
|
||||
|
||||
error: integer arithmetic detected
|
||||
--> $DIR/integer_arithmetic.rs:97:5
|
||||
--> $DIR/integer_arithmetic.rs:104:5
|
||||
|
|
||||
LL | x + y
|
||||
| ^^^^^
|
||||
|
||||
error: integer arithmetic detected
|
||||
--> $DIR/integer_arithmetic.rs:101:5
|
||||
--> $DIR/integer_arithmetic.rs:108:5
|
||||
|
|
||||
LL | (&x + &y)
|
||||
| ^^^^^^^^^
|
||||
|
@ -1,6 +1,13 @@
|
||||
// aux-build:proc_macro_derive.rs
|
||||
|
||||
#![warn(clippy::shadow_same, clippy::shadow_reuse, clippy::shadow_unrelated)]
|
||||
#![allow(clippy::let_unit_value)]
|
||||
|
||||
extern crate proc_macro_derive;
|
||||
|
||||
#[derive(proc_macro_derive::ShadowDerive)]
|
||||
pub struct Nothing;
|
||||
|
||||
fn shadow_same() {
|
||||
let x = 1;
|
||||
let x = x;
|
||||
|
@ -1,278 +1,278 @@
|
||||
error: `x` is shadowed by itself in `x`
|
||||
--> $DIR/shadow.rs:6:9
|
||||
--> $DIR/shadow.rs:13:9
|
||||
|
|
||||
LL | let x = x;
|
||||
| ^
|
||||
|
|
||||
note: previous binding is here
|
||||
--> $DIR/shadow.rs:5:9
|
||||
--> $DIR/shadow.rs:12:9
|
||||
|
|
||||
LL | let x = 1;
|
||||
| ^
|
||||
= note: `-D clippy::shadow-same` implied by `-D warnings`
|
||||
|
||||
error: `mut x` is shadowed by itself in `&x`
|
||||
--> $DIR/shadow.rs:7:13
|
||||
--> $DIR/shadow.rs:14:13
|
||||
|
|
||||
LL | let mut x = &x;
|
||||
| ^
|
||||
|
|
||||
note: previous binding is here
|
||||
--> $DIR/shadow.rs:6:9
|
||||
--> $DIR/shadow.rs:13:9
|
||||
|
|
||||
LL | let x = x;
|
||||
| ^
|
||||
|
||||
error: `x` is shadowed by itself in `&mut x`
|
||||
--> $DIR/shadow.rs:8:9
|
||||
--> $DIR/shadow.rs:15:9
|
||||
|
|
||||
LL | let x = &mut x;
|
||||
| ^
|
||||
|
|
||||
note: previous binding is here
|
||||
--> $DIR/shadow.rs:7:9
|
||||
--> $DIR/shadow.rs:14:9
|
||||
|
|
||||
LL | let mut x = &x;
|
||||
| ^^^^^
|
||||
|
||||
error: `x` is shadowed by itself in `*x`
|
||||
--> $DIR/shadow.rs:9:9
|
||||
--> $DIR/shadow.rs:16:9
|
||||
|
|
||||
LL | let x = *x;
|
||||
| ^
|
||||
|
|
||||
note: previous binding is here
|
||||
--> $DIR/shadow.rs:8:9
|
||||
--> $DIR/shadow.rs:15:9
|
||||
|
|
||||
LL | let x = &mut x;
|
||||
| ^
|
||||
|
||||
error: `x` is shadowed
|
||||
--> $DIR/shadow.rs:14:9
|
||||
--> $DIR/shadow.rs:21:9
|
||||
|
|
||||
LL | let x = x.0;
|
||||
| ^
|
||||
|
|
||||
note: previous binding is here
|
||||
--> $DIR/shadow.rs:13:9
|
||||
--> $DIR/shadow.rs:20:9
|
||||
|
|
||||
LL | let x = ([[0]], ());
|
||||
| ^
|
||||
= note: `-D clippy::shadow-reuse` implied by `-D warnings`
|
||||
|
||||
error: `x` is shadowed
|
||||
--> $DIR/shadow.rs:15:9
|
||||
|
|
||||
LL | let x = x[0];
|
||||
| ^
|
||||
|
|
||||
note: previous binding is here
|
||||
--> $DIR/shadow.rs:14:9
|
||||
|
|
||||
LL | let x = x.0;
|
||||
| ^
|
||||
|
||||
error: `x` is shadowed
|
||||
--> $DIR/shadow.rs:16:10
|
||||
|
|
||||
LL | let [x] = x;
|
||||
| ^
|
||||
|
|
||||
note: previous binding is here
|
||||
--> $DIR/shadow.rs:15:9
|
||||
|
|
||||
LL | let x = x[0];
|
||||
| ^
|
||||
|
||||
error: `x` is shadowed
|
||||
--> $DIR/shadow.rs:17:9
|
||||
|
|
||||
LL | let x = Some(x);
|
||||
| ^
|
||||
|
|
||||
note: previous binding is here
|
||||
--> $DIR/shadow.rs:16:10
|
||||
|
|
||||
LL | let [x] = x;
|
||||
| ^
|
||||
|
||||
error: `x` is shadowed
|
||||
--> $DIR/shadow.rs:18:9
|
||||
|
|
||||
LL | let x = foo(x);
|
||||
| ^
|
||||
|
|
||||
note: previous binding is here
|
||||
--> $DIR/shadow.rs:17:9
|
||||
|
|
||||
LL | let x = Some(x);
|
||||
| ^
|
||||
|
||||
error: `x` is shadowed
|
||||
--> $DIR/shadow.rs:19:9
|
||||
|
|
||||
LL | let x = || x;
|
||||
| ^
|
||||
|
|
||||
note: previous binding is here
|
||||
--> $DIR/shadow.rs:18:9
|
||||
|
|
||||
LL | let x = foo(x);
|
||||
| ^
|
||||
|
||||
error: `x` is shadowed
|
||||
--> $DIR/shadow.rs:20:9
|
||||
|
|
||||
LL | let x = Some(1).map(|_| x)?;
|
||||
| ^
|
||||
|
|
||||
note: previous binding is here
|
||||
--> $DIR/shadow.rs:19:9
|
||||
|
|
||||
LL | let x = || x;
|
||||
| ^
|
||||
|
||||
error: `y` is shadowed
|
||||
--> $DIR/shadow.rs:22:9
|
||||
|
|
||||
LL | let y = match y {
|
||||
LL | let x = x[0];
|
||||
| ^
|
||||
|
|
||||
note: previous binding is here
|
||||
--> $DIR/shadow.rs:21:9
|
||||
|
|
||||
LL | let x = x.0;
|
||||
| ^
|
||||
|
||||
error: `x` is shadowed
|
||||
--> $DIR/shadow.rs:23:10
|
||||
|
|
||||
LL | let [x] = x;
|
||||
| ^
|
||||
|
|
||||
note: previous binding is here
|
||||
--> $DIR/shadow.rs:22:9
|
||||
|
|
||||
LL | let x = x[0];
|
||||
| ^
|
||||
|
||||
error: `x` is shadowed
|
||||
--> $DIR/shadow.rs:24:9
|
||||
|
|
||||
LL | let x = Some(x);
|
||||
| ^
|
||||
|
|
||||
note: previous binding is here
|
||||
--> $DIR/shadow.rs:23:10
|
||||
|
|
||||
LL | let [x] = x;
|
||||
| ^
|
||||
|
||||
error: `x` is shadowed
|
||||
--> $DIR/shadow.rs:25:9
|
||||
|
|
||||
LL | let x = foo(x);
|
||||
| ^
|
||||
|
|
||||
note: previous binding is here
|
||||
--> $DIR/shadow.rs:24:9
|
||||
|
|
||||
LL | let x = Some(x);
|
||||
| ^
|
||||
|
||||
error: `x` is shadowed
|
||||
--> $DIR/shadow.rs:26:9
|
||||
|
|
||||
LL | let x = || x;
|
||||
| ^
|
||||
|
|
||||
note: previous binding is here
|
||||
--> $DIR/shadow.rs:25:9
|
||||
|
|
||||
LL | let x = foo(x);
|
||||
| ^
|
||||
|
||||
error: `x` is shadowed
|
||||
--> $DIR/shadow.rs:27:9
|
||||
|
|
||||
LL | let x = Some(1).map(|_| x)?;
|
||||
| ^
|
||||
|
|
||||
note: previous binding is here
|
||||
--> $DIR/shadow.rs:26:9
|
||||
|
|
||||
LL | let x = || x;
|
||||
| ^
|
||||
|
||||
error: `y` is shadowed
|
||||
--> $DIR/shadow.rs:29:9
|
||||
|
|
||||
LL | let y = match y {
|
||||
| ^
|
||||
|
|
||||
note: previous binding is here
|
||||
--> $DIR/shadow.rs:28:9
|
||||
|
|
||||
LL | let y = 1;
|
||||
| ^
|
||||
|
||||
error: `x` shadows a previous, unrelated binding
|
||||
--> $DIR/shadow.rs:31:9
|
||||
--> $DIR/shadow.rs:38:9
|
||||
|
|
||||
LL | let x = 2;
|
||||
| ^
|
||||
|
|
||||
note: previous binding is here
|
||||
--> $DIR/shadow.rs:30:9
|
||||
--> $DIR/shadow.rs:37:9
|
||||
|
|
||||
LL | let x = 1;
|
||||
| ^
|
||||
= note: `-D clippy::shadow-unrelated` implied by `-D warnings`
|
||||
|
||||
error: `x` shadows a previous, unrelated binding
|
||||
--> $DIR/shadow.rs:36:13
|
||||
--> $DIR/shadow.rs:43:13
|
||||
|
|
||||
LL | let x = 1;
|
||||
| ^
|
||||
|
|
||||
note: previous binding is here
|
||||
--> $DIR/shadow.rs:35:10
|
||||
--> $DIR/shadow.rs:42:10
|
||||
|
|
||||
LL | fn f(x: u32) {
|
||||
| ^
|
||||
|
||||
error: `x` shadows a previous, unrelated binding
|
||||
--> $DIR/shadow.rs:41:14
|
||||
--> $DIR/shadow.rs:48:14
|
||||
|
|
||||
LL | Some(x) => {
|
||||
| ^
|
||||
|
|
||||
note: previous binding is here
|
||||
--> $DIR/shadow.rs:38:9
|
||||
--> $DIR/shadow.rs:45:9
|
||||
|
|
||||
LL | let x = 1;
|
||||
| ^
|
||||
|
||||
error: `x` shadows a previous, unrelated binding
|
||||
--> $DIR/shadow.rs:42:17
|
||||
--> $DIR/shadow.rs:49:17
|
||||
|
|
||||
LL | let x = 1;
|
||||
| ^
|
||||
|
|
||||
note: previous binding is here
|
||||
--> $DIR/shadow.rs:41:14
|
||||
--> $DIR/shadow.rs:48:14
|
||||
|
|
||||
LL | Some(x) => {
|
||||
| ^
|
||||
|
||||
error: `x` shadows a previous, unrelated binding
|
||||
--> $DIR/shadow.rs:46:17
|
||||
--> $DIR/shadow.rs:53:17
|
||||
|
|
||||
LL | if let Some(x) = Some(1) {}
|
||||
| ^
|
||||
|
|
||||
note: previous binding is here
|
||||
--> $DIR/shadow.rs:38:9
|
||||
--> $DIR/shadow.rs:45:9
|
||||
|
|
||||
LL | let x = 1;
|
||||
| ^
|
||||
|
||||
error: `x` shadows a previous, unrelated binding
|
||||
--> $DIR/shadow.rs:47:20
|
||||
--> $DIR/shadow.rs:54:20
|
||||
|
|
||||
LL | while let Some(x) = Some(1) {}
|
||||
| ^
|
||||
|
|
||||
note: previous binding is here
|
||||
--> $DIR/shadow.rs:38:9
|
||||
--> $DIR/shadow.rs:45:9
|
||||
|
|
||||
LL | let x = 1;
|
||||
| ^
|
||||
|
||||
error: `x` shadows a previous, unrelated binding
|
||||
--> $DIR/shadow.rs:48:15
|
||||
--> $DIR/shadow.rs:55:15
|
||||
|
|
||||
LL | let _ = |[x]: [u32; 1]| {
|
||||
| ^
|
||||
|
|
||||
note: previous binding is here
|
||||
--> $DIR/shadow.rs:38:9
|
||||
--> $DIR/shadow.rs:45:9
|
||||
|
|
||||
LL | let x = 1;
|
||||
| ^
|
||||
|
||||
error: `x` shadows a previous, unrelated binding
|
||||
--> $DIR/shadow.rs:49:13
|
||||
--> $DIR/shadow.rs:56:13
|
||||
|
|
||||
LL | let x = 1;
|
||||
| ^
|
||||
|
|
||||
note: previous binding is here
|
||||
--> $DIR/shadow.rs:48:15
|
||||
--> $DIR/shadow.rs:55:15
|
||||
|
|
||||
LL | let _ = |[x]: [u32; 1]| {
|
||||
| ^
|
||||
|
||||
error: `y` is shadowed
|
||||
--> $DIR/shadow.rs:52:17
|
||||
--> $DIR/shadow.rs:59:17
|
||||
|
|
||||
LL | if let Some(y) = y {}
|
||||
| ^
|
||||
|
|
||||
note: previous binding is here
|
||||
--> $DIR/shadow.rs:51:9
|
||||
--> $DIR/shadow.rs:58:9
|
||||
|
|
||||
LL | let y = Some(1);
|
||||
| ^
|
||||
|
||||
error: `_b` shadows a previous, unrelated binding
|
||||
--> $DIR/shadow.rs:88:9
|
||||
--> $DIR/shadow.rs:95:9
|
||||
|
|
||||
LL | let _b = _a;
|
||||
| ^^
|
||||
|
|
||||
note: previous binding is here
|
||||
--> $DIR/shadow.rs:87:28
|
||||
--> $DIR/shadow.rs:94:28
|
||||
|
|
||||
LL | pub async fn foo2(_a: i32, _b: i64) {
|
||||
| ^^
|
||||
|
||||
error: `x` shadows a previous, unrelated binding
|
||||
--> $DIR/shadow.rs:94:21
|
||||
--> $DIR/shadow.rs:101:21
|
||||
|
|
||||
LL | if let Some(x) = Some(1) { x } else { 1 }
|
||||
| ^
|
||||
|
|
||||
note: previous binding is here
|
||||
--> $DIR/shadow.rs:93:13
|
||||
--> $DIR/shadow.rs:100:13
|
||||
|
|
||||
LL | let x = 1;
|
||||
| ^
|
||||
|
Loading…
x
Reference in New Issue
Block a user