diff --git a/src/test/ui/associated-const/issue-69020-assoc-const-arith-overflow.noopt.stderr b/src/test/ui/associated-const/issue-69020-assoc-const-arith-overflow.noopt.stderr index 017a6f41dd8..510a13ea5b1 100644 --- a/src/test/ui/associated-const/issue-69020-assoc-const-arith-overflow.noopt.stderr +++ b/src/test/ui/associated-const/issue-69020-assoc-const-arith-overflow.noopt.stderr @@ -1,5 +1,5 @@ error: this arithmetic operation will overflow - --> $DIR/issue-69020-assoc-const-arith-overflow.rs:28:22 + --> $DIR/issue-69020-assoc-const-arith-overflow.rs:29:22 | LL | const NEG: i32 = -i32::MIN + T::NEG; | ^^^^^^^^^ attempt to negate with overflow @@ -7,25 +7,25 @@ LL | const NEG: i32 = -i32::MIN + T::NEG; = note: `#[deny(arithmetic_overflow)]` on by default error: this arithmetic operation will overflow - --> $DIR/issue-69020-assoc-const-arith-overflow.rs:30:31 + --> $DIR/issue-69020-assoc-const-arith-overflow.rs:31:35 | -LL | const GEN: i32 = T::NEG + (-i32::MIN); - | ^^^^^^^^^^^ attempt to negate with overflow +LL | const NEG_REV: i32 = T::NEG + (-i32::MIN); + | ^^^^^^^^^^^ attempt to negate with overflow error: this arithmetic operation will overflow - --> $DIR/issue-69020-assoc-const-arith-overflow.rs:33:22 + --> $DIR/issue-69020-assoc-const-arith-overflow.rs:34:22 | LL | const ADD: i32 = (i32::MAX+1) + T::ADD; | ^^^^^^^^^^^^ attempt to add with overflow error: this arithmetic operation will overflow - --> $DIR/issue-69020-assoc-const-arith-overflow.rs:35:32 + --> $DIR/issue-69020-assoc-const-arith-overflow.rs:36:36 | -LL | const DDA: i32 = T::ADD + (i32::MAX+1); - | ^^^^^^^^^^^^ attempt to add with overflow +LL | const ADD_REV: i32 = T::ADD + (i32::MAX+1); + | ^^^^^^^^^^^^ attempt to add with overflow error: this operation will panic at runtime - --> $DIR/issue-69020-assoc-const-arith-overflow.rs:38:22 + --> $DIR/issue-69020-assoc-const-arith-overflow.rs:39:22 | LL | const DIV: i32 = (1/0) + T::DIV; | ^^^^^ attempt to divide by zero @@ -33,22 +33,22 @@ LL | const DIV: i32 = (1/0) + T::DIV; = note: `#[deny(unconditional_panic)]` on by default error: this operation will panic at runtime - --> $DIR/issue-69020-assoc-const-arith-overflow.rs:40:31 + --> $DIR/issue-69020-assoc-const-arith-overflow.rs:41:35 | -LL | const VID: i32 = T::DIV + (1/0); - | ^^^^^ attempt to divide by zero +LL | const DIV_REV: i32 = T::DIV + (1/0); + | ^^^^^ attempt to divide by zero error: this operation will panic at runtime - --> $DIR/issue-69020-assoc-const-arith-overflow.rs:43:22 + --> $DIR/issue-69020-assoc-const-arith-overflow.rs:44:22 | LL | const OOB: i32 = [1][1] + T::OOB; | ^^^^^^ index out of bounds: the len is 1 but the index is 1 error: this operation will panic at runtime - --> $DIR/issue-69020-assoc-const-arith-overflow.rs:45:31 + --> $DIR/issue-69020-assoc-const-arith-overflow.rs:46:35 | -LL | const BOO: i32 = T::OOB + [1][1]; - | ^^^^^^ index out of bounds: the len is 1 but the index is 1 +LL | const OOB_REV: i32 = T::OOB + [1][1]; + | ^^^^^^ index out of bounds: the len is 1 but the index is 1 error: aborting due to 8 previous errors diff --git a/src/test/ui/associated-const/issue-69020-assoc-const-arith-overflow.opt.stderr b/src/test/ui/associated-const/issue-69020-assoc-const-arith-overflow.opt.stderr index 017a6f41dd8..510a13ea5b1 100644 --- a/src/test/ui/associated-const/issue-69020-assoc-const-arith-overflow.opt.stderr +++ b/src/test/ui/associated-const/issue-69020-assoc-const-arith-overflow.opt.stderr @@ -1,5 +1,5 @@ error: this arithmetic operation will overflow - --> $DIR/issue-69020-assoc-const-arith-overflow.rs:28:22 + --> $DIR/issue-69020-assoc-const-arith-overflow.rs:29:22 | LL | const NEG: i32 = -i32::MIN + T::NEG; | ^^^^^^^^^ attempt to negate with overflow @@ -7,25 +7,25 @@ LL | const NEG: i32 = -i32::MIN + T::NEG; = note: `#[deny(arithmetic_overflow)]` on by default error: this arithmetic operation will overflow - --> $DIR/issue-69020-assoc-const-arith-overflow.rs:30:31 + --> $DIR/issue-69020-assoc-const-arith-overflow.rs:31:35 | -LL | const GEN: i32 = T::NEG + (-i32::MIN); - | ^^^^^^^^^^^ attempt to negate with overflow +LL | const NEG_REV: i32 = T::NEG + (-i32::MIN); + | ^^^^^^^^^^^ attempt to negate with overflow error: this arithmetic operation will overflow - --> $DIR/issue-69020-assoc-const-arith-overflow.rs:33:22 + --> $DIR/issue-69020-assoc-const-arith-overflow.rs:34:22 | LL | const ADD: i32 = (i32::MAX+1) + T::ADD; | ^^^^^^^^^^^^ attempt to add with overflow error: this arithmetic operation will overflow - --> $DIR/issue-69020-assoc-const-arith-overflow.rs:35:32 + --> $DIR/issue-69020-assoc-const-arith-overflow.rs:36:36 | -LL | const DDA: i32 = T::ADD + (i32::MAX+1); - | ^^^^^^^^^^^^ attempt to add with overflow +LL | const ADD_REV: i32 = T::ADD + (i32::MAX+1); + | ^^^^^^^^^^^^ attempt to add with overflow error: this operation will panic at runtime - --> $DIR/issue-69020-assoc-const-arith-overflow.rs:38:22 + --> $DIR/issue-69020-assoc-const-arith-overflow.rs:39:22 | LL | const DIV: i32 = (1/0) + T::DIV; | ^^^^^ attempt to divide by zero @@ -33,22 +33,22 @@ LL | const DIV: i32 = (1/0) + T::DIV; = note: `#[deny(unconditional_panic)]` on by default error: this operation will panic at runtime - --> $DIR/issue-69020-assoc-const-arith-overflow.rs:40:31 + --> $DIR/issue-69020-assoc-const-arith-overflow.rs:41:35 | -LL | const VID: i32 = T::DIV + (1/0); - | ^^^^^ attempt to divide by zero +LL | const DIV_REV: i32 = T::DIV + (1/0); + | ^^^^^ attempt to divide by zero error: this operation will panic at runtime - --> $DIR/issue-69020-assoc-const-arith-overflow.rs:43:22 + --> $DIR/issue-69020-assoc-const-arith-overflow.rs:44:22 | LL | const OOB: i32 = [1][1] + T::OOB; | ^^^^^^ index out of bounds: the len is 1 but the index is 1 error: this operation will panic at runtime - --> $DIR/issue-69020-assoc-const-arith-overflow.rs:45:31 + --> $DIR/issue-69020-assoc-const-arith-overflow.rs:46:35 | -LL | const BOO: i32 = T::OOB + [1][1]; - | ^^^^^^ index out of bounds: the len is 1 but the index is 1 +LL | const OOB_REV: i32 = T::OOB + [1][1]; + | ^^^^^^ index out of bounds: the len is 1 but the index is 1 error: aborting due to 8 previous errors diff --git a/src/test/ui/associated-const/issue-69020-assoc-const-arith-overflow.opt_with_overflow_checks.stderr b/src/test/ui/associated-const/issue-69020-assoc-const-arith-overflow.opt_with_overflow_checks.stderr index 017a6f41dd8..510a13ea5b1 100644 --- a/src/test/ui/associated-const/issue-69020-assoc-const-arith-overflow.opt_with_overflow_checks.stderr +++ b/src/test/ui/associated-const/issue-69020-assoc-const-arith-overflow.opt_with_overflow_checks.stderr @@ -1,5 +1,5 @@ error: this arithmetic operation will overflow - --> $DIR/issue-69020-assoc-const-arith-overflow.rs:28:22 + --> $DIR/issue-69020-assoc-const-arith-overflow.rs:29:22 | LL | const NEG: i32 = -i32::MIN + T::NEG; | ^^^^^^^^^ attempt to negate with overflow @@ -7,25 +7,25 @@ LL | const NEG: i32 = -i32::MIN + T::NEG; = note: `#[deny(arithmetic_overflow)]` on by default error: this arithmetic operation will overflow - --> $DIR/issue-69020-assoc-const-arith-overflow.rs:30:31 + --> $DIR/issue-69020-assoc-const-arith-overflow.rs:31:35 | -LL | const GEN: i32 = T::NEG + (-i32::MIN); - | ^^^^^^^^^^^ attempt to negate with overflow +LL | const NEG_REV: i32 = T::NEG + (-i32::MIN); + | ^^^^^^^^^^^ attempt to negate with overflow error: this arithmetic operation will overflow - --> $DIR/issue-69020-assoc-const-arith-overflow.rs:33:22 + --> $DIR/issue-69020-assoc-const-arith-overflow.rs:34:22 | LL | const ADD: i32 = (i32::MAX+1) + T::ADD; | ^^^^^^^^^^^^ attempt to add with overflow error: this arithmetic operation will overflow - --> $DIR/issue-69020-assoc-const-arith-overflow.rs:35:32 + --> $DIR/issue-69020-assoc-const-arith-overflow.rs:36:36 | -LL | const DDA: i32 = T::ADD + (i32::MAX+1); - | ^^^^^^^^^^^^ attempt to add with overflow +LL | const ADD_REV: i32 = T::ADD + (i32::MAX+1); + | ^^^^^^^^^^^^ attempt to add with overflow error: this operation will panic at runtime - --> $DIR/issue-69020-assoc-const-arith-overflow.rs:38:22 + --> $DIR/issue-69020-assoc-const-arith-overflow.rs:39:22 | LL | const DIV: i32 = (1/0) + T::DIV; | ^^^^^ attempt to divide by zero @@ -33,22 +33,22 @@ LL | const DIV: i32 = (1/0) + T::DIV; = note: `#[deny(unconditional_panic)]` on by default error: this operation will panic at runtime - --> $DIR/issue-69020-assoc-const-arith-overflow.rs:40:31 + --> $DIR/issue-69020-assoc-const-arith-overflow.rs:41:35 | -LL | const VID: i32 = T::DIV + (1/0); - | ^^^^^ attempt to divide by zero +LL | const DIV_REV: i32 = T::DIV + (1/0); + | ^^^^^ attempt to divide by zero error: this operation will panic at runtime - --> $DIR/issue-69020-assoc-const-arith-overflow.rs:43:22 + --> $DIR/issue-69020-assoc-const-arith-overflow.rs:44:22 | LL | const OOB: i32 = [1][1] + T::OOB; | ^^^^^^ index out of bounds: the len is 1 but the index is 1 error: this operation will panic at runtime - --> $DIR/issue-69020-assoc-const-arith-overflow.rs:45:31 + --> $DIR/issue-69020-assoc-const-arith-overflow.rs:46:35 | -LL | const BOO: i32 = T::OOB + [1][1]; - | ^^^^^^ index out of bounds: the len is 1 but the index is 1 +LL | const OOB_REV: i32 = T::OOB + [1][1]; + | ^^^^^^ index out of bounds: the len is 1 but the index is 1 error: aborting due to 8 previous errors diff --git a/src/test/ui/associated-const/issue-69020-assoc-const-arith-overflow.rs b/src/test/ui/associated-const/issue-69020-assoc-const-arith-overflow.rs index 9a31c10a0c6..850f65ae9d1 100644 --- a/src/test/ui/associated-const/issue-69020-assoc-const-arith-overflow.rs +++ b/src/test/ui/associated-const/issue-69020-assoc-const-arith-overflow.rs @@ -9,39 +9,40 @@ use std::i32; pub trait Foo { const NEG: i32; - const GEN: i32; + const NEG_REV: i32; const ADD: i32; - const DDA: i32; + const ADD_REV: i32; const DIV: i32; - const VID: i32; + const DIV_REV: i32; const OOB: i32; - const BOO: i32; + const OOB_REV: i32; } -// These constants cannot be evaluated already (they depend on `T::N`), so -// they can just be linted like normal run-time code. But codegen works -// a bit different in const context, so this test makes sure that we still catch overflow. +// These constants cannot be evaluated already (they depend on `T::N`), so they can just be linted +// like normal run-time code. But codegen works a bit different in const context, so this test +// makes sure that we still catch overflow. Also make sure we emit the same lints if we reverse the +// operands (so that the generic operand comes first). impl Foo for Vec { const NEG: i32 = -i32::MIN + T::NEG; //~^ ERROR arithmetic operation will overflow - const GEN: i32 = T::NEG + (-i32::MIN); + const NEG_REV: i32 = T::NEG + (-i32::MIN); //~^ ERROR arithmetic operation will overflow const ADD: i32 = (i32::MAX+1) + T::ADD; //~^ ERROR arithmetic operation will overflow - const DDA: i32 = T::ADD + (i32::MAX+1); + const ADD_REV: i32 = T::ADD + (i32::MAX+1); //~^ ERROR arithmetic operation will overflow const DIV: i32 = (1/0) + T::DIV; //~^ ERROR operation will panic - const VID: i32 = T::DIV + (1/0); + const DIV_REV: i32 = T::DIV + (1/0); //~^ ERROR operation will panic const OOB: i32 = [1][1] + T::OOB; //~^ ERROR operation will panic - const BOO: i32 = T::OOB + [1][1]; + const OOB_REV: i32 = T::OOB + [1][1]; //~^ ERROR operation will panic }