Change:
<del> error: this arithmetic operation will overflow --> $DIR/lint-exceeding-bitshifts.rs:22:13 </del> <ins> warning: this arithmetic operation will overflow --> $DIR/lint-exceeding-bitshifts.rs:18:20 </ins> | <del> LL |     let _ = x << 42; |             ^^^^^^^ attempt to shift left with overflow </del> <ins> LL |     const N: i32 = T::N << 42; |                    ^^^^^^^^^^ attempt to shift left with overflow </ins> | note: the lint level is defined here --> $DIR/lint-exceeding-bitshifts.rs:9:9 | <del> LL | #![deny(arithmetic_overflow, const_err)] </del> <ins> LL | #![warn(arithmetic_overflow, const_err)] </ins> |         ^^^^^^^^^^^^^^^^^^^ <del> error: this arithmetic operation will overflow </del> <ins> warning: this arithmetic operation will overflow --> $DIR/lint-exceeding-bitshifts.rs:22:13 | LL |     let _ = x << 42; |             ^^^^^^^ attempt to shift left with overflow warning: this arithmetic operation will overflow </ins> --> $DIR/lint-exceeding-bitshifts.rs:27:15 | LL |       let n = 1u8 << 8; |               ^^^^^^^^ attempt to shift left with overflow <del> error: this arithmetic operation will overflow </del> <ins> warning: this arithmetic operation will overflow </ins> --> $DIR/lint-exceeding-bitshifts.rs:29:15 | LL |       let n = 1u16 << 16; |               ^^^^^^^^^^ attempt to shift left with overflow <del> error: this arithmetic operation will overflow </del> <ins> warning: this arithmetic operation will overflow </ins> --> $DIR/lint-exceeding-bitshifts.rs:31:15 | LL |       let n = 1u32 << 32; |               ^^^^^^^^^^ attempt to shift left with overflow <del> error: this arithmetic operation will overflow </del> <ins> warning: this arithmetic operation will overflow </ins> --> $DIR/lint-exceeding-bitshifts.rs:33:15 | LL |       let n = 1u64 << 64; |               ^^^^^^^^^^ attempt to shift left with overflow <del> error: this arithmetic operation will overflow </del> <ins> warning: this arithmetic operation will overflow </ins> --> $DIR/lint-exceeding-bitshifts.rs:35:15 | LL |       let n = 1i8 << 8; |               ^^^^^^^^ attempt to shift left with overflow <del> error: this arithmetic operation will overflow </del> <ins> warning: this arithmetic operation will overflow </ins> --> $DIR/lint-exceeding-bitshifts.rs:37:15 | LL |       let n = 1i16 << 16; |               ^^^^^^^^^^ attempt to shift left with overflow <del> error: this arithmetic operation will overflow </del> <ins> warning: this arithmetic operation will overflow </ins> --> $DIR/lint-exceeding-bitshifts.rs:39:15 | LL |       let n = 1i32 << 32; |               ^^^^^^^^^^ attempt to shift left with overflow <del> error: this arithmetic operation will overflow </del> <ins> warning: this arithmetic operation will overflow </ins> --> $DIR/lint-exceeding-bitshifts.rs:41:15 | LL |       let n = 1i64 << 64; |               ^^^^^^^^^^ attempt to shift left with overflow <del> error: this arithmetic operation will overflow </del> <ins> warning: this arithmetic operation will overflow </ins> --> $DIR/lint-exceeding-bitshifts.rs:44:15 | LL |       let n = 1u8 >> 8; |               ^^^^^^^^ attempt to shift right with overflow <del> error: this arithmetic operation will overflow </del> <ins> warning: this arithmetic operation will overflow </ins> --> $DIR/lint-exceeding-bitshifts.rs:46:15 | LL |       let n = 1u16 >> 16; |               ^^^^^^^^^^ attempt to shift right with overflow <del> error: this arithmetic operation will overflow </del> <ins> warning: this arithmetic operation will overflow </ins> --> $DIR/lint-exceeding-bitshifts.rs:48:15 | LL |       let n = 1u32 >> 32; |               ^^^^^^^^^^ attempt to shift right with overflow <del> error: this arithmetic operation will overflow </del> <ins> warning: this arithmetic operation will overflow </ins> --> $DIR/lint-exceeding-bitshifts.rs:50:15 | LL |       let n = 1u64 >> 64; |               ^^^^^^^^^^ attempt to shift right with overflow <del> error: this arithmetic operation will overflow </del> <ins> warning: this arithmetic operation will overflow </ins> --> $DIR/lint-exceeding-bitshifts.rs:52:15 | LL |       let n = 1i8 >> 8; |               ^^^^^^^^ attempt to shift right with overflow <del> error: this arithmetic operation will overflow </del> <ins> warning: this arithmetic operation will overflow </ins> --> $DIR/lint-exceeding-bitshifts.rs:54:15 | LL |       let n = 1i16 >> 16; |               ^^^^^^^^^^ attempt to shift right with overflow <del> error: this arithmetic operation will overflow </del> <ins> warning: this arithmetic operation will overflow </ins> --> $DIR/lint-exceeding-bitshifts.rs:56:15 | LL |       let n = 1i32 >> 32; |               ^^^^^^^^^^ attempt to shift right with overflow <del> error: this arithmetic operation will overflow </del> <ins> warning: this arithmetic operation will overflow </ins> --> $DIR/lint-exceeding-bitshifts.rs:58:15 | LL |       let n = 1i64 >> 64; |               ^^^^^^^^^^ attempt to shift right with overflow <del> error: this arithmetic operation will overflow </del> <ins> warning: this arithmetic operation will overflow </ins> --> $DIR/lint-exceeding-bitshifts.rs:62:15 | LL |       let n = n << 8; |               ^^^^^^ attempt to shift left with overflow <del> error: this arithmetic operation will overflow </del> <ins> warning: this arithmetic operation will overflow </ins> --> $DIR/lint-exceeding-bitshifts.rs:64:15 | LL |       let n = 1u8 << -8; |               ^^^^^^^^^ attempt to shift left with overflow <del> error: this arithmetic operation will overflow </del> <ins> warning: this arithmetic operation will overflow </ins> --> $DIR/lint-exceeding-bitshifts.rs:69:15 | LL |       let n = 1u8 << (4+4); |               ^^^^^^^^^^^^ attempt to shift left with overflow <del> error: this arithmetic operation will overflow </del> <ins> warning: this arithmetic operation will overflow </ins> --> $DIR/lint-exceeding-bitshifts.rs:71:15 | LL |       let n = 1i64 >> [64][0]; |               ^^^^^^^^^^^^^^^ attempt to shift right with overflow <del> error: this arithmetic operation will overflow </del> <ins> warning: this arithmetic operation will overflow </ins> --> $DIR/lint-exceeding-bitshifts.rs:77:15 | LL |       let n = 1_isize << BITS; |               ^^^^^^^^^^^^^^^ attempt to shift left with overflow <del> error: this arithmetic operation will overflow </del> <ins> warning: this arithmetic operation will overflow </ins> --> $DIR/lint-exceeding-bitshifts.rs:78:15 | LL |       let n = 1_usize << BITS; |               ^^^^^^^^^^^^^^^ attempt to shift left with overflow <del> error: aborting due to 23 previous errors </del> <ins> warning: 24 warnings emitted </ins>

Discussion:
The lint should fire on the following code, but it does not: (This testcase now exists in-tree as a FIXME in .) Cc <!-- TRIAGEBOTSTART --<!-- TRIAGEBOTASSIGNSTART --This issue has been assigned to via . <!-- TRIAGEBOTASSIGNDATASTARTTRIAGEBOTASSIGNDATAEND --<!-- TRIAGEBOTASSIGNEND --<!-- TRIAGEBOT_END --
I'd like to take this. claim
I have some plans to follow-up on with some cleanup. That might at least partially resolve this issue here. So it's probably best to wait until after that is done.
All right, landed, so what I planned here is done. The remaining issue is about associated consts. The issue there is that fails, or maybe we are hitting an , but I have not tried further. The issue is all yours, :)
Great! I'll start investigating.
Never mind, that one is already fixed on beta.
got reverted in , so we have to reopen this.