about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/test/ui/consts/issue-69020.default.stderr28
-rw-r--r--src/test/ui/consts/issue-69020.noopt.stderr28
-rw-r--r--src/test/ui/consts/issue-69020.opt.stderr28
-rw-r--r--src/test/ui/consts/issue-69020.opt_with_overflow_checks.stderr28
-rw-r--r--src/test/ui/consts/issue-69020.rs16
5 files changed, 110 insertions, 18 deletions
diff --git a/src/test/ui/consts/issue-69020.default.stderr b/src/test/ui/consts/issue-69020.default.stderr
index 0bf40ce4b31..1b1987f4dc3 100644
--- a/src/test/ui/consts/issue-69020.default.stderr
+++ b/src/test/ui/consts/issue-69020.default.stderr
@@ -1,10 +1,30 @@
 error: this arithmetic operation will overflow
-  --> $DIR/issue-69020.rs:15:20
+  --> $DIR/issue-69020.rs:21:22
    |
-LL |     const N: i32 = -i32::MIN + T::N;
-   |                    ^^^^^^^^^ attempt to negate with overflow
+LL |     const NEG: i32 = -i32::MIN + T::NEG;
+   |                      ^^^^^^^^^ attempt to negate with overflow
    |
    = note: `#[deny(overflow)]` on by default
 
-error: aborting due to previous error
+error: this arithmetic operation will overflow
+  --> $DIR/issue-69020.rs:23:22
+   |
+LL |     const ADD: i32 = (i32::MAX+1) + T::ADD;
+   |                      ^^^^^^^^^^^^ attempt to add with overflow
+
+error: this operation will panic at runtime
+  --> $DIR/issue-69020.rs:25:22
+   |
+LL |     const DIV: i32 = (1/0) + T::DIV;
+   |                      ^^^^^ attempt to divide by zero
+   |
+   = note: `#[deny(panic)]` on by default
+
+error: this operation will panic at runtime
+  --> $DIR/issue-69020.rs:27:22
+   |
+LL |     const OOB: i32 = [1][1] + T::OOB;
+   |                      ^^^^^^ index out of bounds: the len is 1 but the index is 1
+
+error: aborting due to 4 previous errors
 
diff --git a/src/test/ui/consts/issue-69020.noopt.stderr b/src/test/ui/consts/issue-69020.noopt.stderr
index 0bf40ce4b31..1b1987f4dc3 100644
--- a/src/test/ui/consts/issue-69020.noopt.stderr
+++ b/src/test/ui/consts/issue-69020.noopt.stderr
@@ -1,10 +1,30 @@
 error: this arithmetic operation will overflow
-  --> $DIR/issue-69020.rs:15:20
+  --> $DIR/issue-69020.rs:21:22
    |
-LL |     const N: i32 = -i32::MIN + T::N;
-   |                    ^^^^^^^^^ attempt to negate with overflow
+LL |     const NEG: i32 = -i32::MIN + T::NEG;
+   |                      ^^^^^^^^^ attempt to negate with overflow
    |
    = note: `#[deny(overflow)]` on by default
 
-error: aborting due to previous error
+error: this arithmetic operation will overflow
+  --> $DIR/issue-69020.rs:23:22
+   |
+LL |     const ADD: i32 = (i32::MAX+1) + T::ADD;
+   |                      ^^^^^^^^^^^^ attempt to add with overflow
+
+error: this operation will panic at runtime
+  --> $DIR/issue-69020.rs:25:22
+   |
+LL |     const DIV: i32 = (1/0) + T::DIV;
+   |                      ^^^^^ attempt to divide by zero
+   |
+   = note: `#[deny(panic)]` on by default
+
+error: this operation will panic at runtime
+  --> $DIR/issue-69020.rs:27:22
+   |
+LL |     const OOB: i32 = [1][1] + T::OOB;
+   |                      ^^^^^^ index out of bounds: the len is 1 but the index is 1
+
+error: aborting due to 4 previous errors
 
diff --git a/src/test/ui/consts/issue-69020.opt.stderr b/src/test/ui/consts/issue-69020.opt.stderr
index 0bf40ce4b31..1b1987f4dc3 100644
--- a/src/test/ui/consts/issue-69020.opt.stderr
+++ b/src/test/ui/consts/issue-69020.opt.stderr
@@ -1,10 +1,30 @@
 error: this arithmetic operation will overflow
-  --> $DIR/issue-69020.rs:15:20
+  --> $DIR/issue-69020.rs:21:22
    |
-LL |     const N: i32 = -i32::MIN + T::N;
-   |                    ^^^^^^^^^ attempt to negate with overflow
+LL |     const NEG: i32 = -i32::MIN + T::NEG;
+   |                      ^^^^^^^^^ attempt to negate with overflow
    |
    = note: `#[deny(overflow)]` on by default
 
-error: aborting due to previous error
+error: this arithmetic operation will overflow
+  --> $DIR/issue-69020.rs:23:22
+   |
+LL |     const ADD: i32 = (i32::MAX+1) + T::ADD;
+   |                      ^^^^^^^^^^^^ attempt to add with overflow
+
+error: this operation will panic at runtime
+  --> $DIR/issue-69020.rs:25:22
+   |
+LL |     const DIV: i32 = (1/0) + T::DIV;
+   |                      ^^^^^ attempt to divide by zero
+   |
+   = note: `#[deny(panic)]` on by default
+
+error: this operation will panic at runtime
+  --> $DIR/issue-69020.rs:27:22
+   |
+LL |     const OOB: i32 = [1][1] + T::OOB;
+   |                      ^^^^^^ index out of bounds: the len is 1 but the index is 1
+
+error: aborting due to 4 previous errors
 
diff --git a/src/test/ui/consts/issue-69020.opt_with_overflow_checks.stderr b/src/test/ui/consts/issue-69020.opt_with_overflow_checks.stderr
index 0bf40ce4b31..1b1987f4dc3 100644
--- a/src/test/ui/consts/issue-69020.opt_with_overflow_checks.stderr
+++ b/src/test/ui/consts/issue-69020.opt_with_overflow_checks.stderr
@@ -1,10 +1,30 @@
 error: this arithmetic operation will overflow
-  --> $DIR/issue-69020.rs:15:20
+  --> $DIR/issue-69020.rs:21:22
    |
-LL |     const N: i32 = -i32::MIN + T::N;
-   |                    ^^^^^^^^^ attempt to negate with overflow
+LL |     const NEG: i32 = -i32::MIN + T::NEG;
+   |                      ^^^^^^^^^ attempt to negate with overflow
    |
    = note: `#[deny(overflow)]` on by default
 
-error: aborting due to previous error
+error: this arithmetic operation will overflow
+  --> $DIR/issue-69020.rs:23:22
+   |
+LL |     const ADD: i32 = (i32::MAX+1) + T::ADD;
+   |                      ^^^^^^^^^^^^ attempt to add with overflow
+
+error: this operation will panic at runtime
+  --> $DIR/issue-69020.rs:25:22
+   |
+LL |     const DIV: i32 = (1/0) + T::DIV;
+   |                      ^^^^^ attempt to divide by zero
+   |
+   = note: `#[deny(panic)]` on by default
+
+error: this operation will panic at runtime
+  --> $DIR/issue-69020.rs:27:22
+   |
+LL |     const OOB: i32 = [1][1] + T::OOB;
+   |                      ^^^^^^ index out of bounds: the len is 1 but the index is 1
+
+error: aborting due to 4 previous errors
 
diff --git a/src/test/ui/consts/issue-69020.rs b/src/test/ui/consts/issue-69020.rs
index 9f1ed862c7b..963ab01a33c 100644
--- a/src/test/ui/consts/issue-69020.rs
+++ b/src/test/ui/consts/issue-69020.rs
@@ -8,10 +8,22 @@
 use std::i32;
 
 pub trait Foo {
-    const N: i32;
+    const NEG: i32;
+    const ADD: i32;
+    const DIV: i32;
+    const OOB: 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.
 impl<T: Foo> Foo for Vec<T> {
-    const N: i32 = -i32::MIN + T::N;
+    const NEG: i32 = -i32::MIN + T::NEG;
     //~^ ERROR arithmetic operation will overflow
+    const ADD: i32 = (i32::MAX+1) + T::ADD;
+    //~^ ERROR arithmetic operation will overflow
+    const DIV: i32 = (1/0) + T::DIV;
+    //~^ ERROR operation will panic
+    const OOB: i32 = [1][1] + T::OOB;
+    //~^ ERROR operation will panic
 }