]> git.lizzy.rs Git - rust.git/commitdiff
expand assoc-const test a bit, just to be sure
authorRalf Jung <post@ralfj.de>
Sat, 15 Feb 2020 10:47:11 +0000 (11:47 +0100)
committerRalf Jung <post@ralfj.de>
Sat, 15 Feb 2020 10:47:11 +0000 (11:47 +0100)
src/test/ui/consts/issue-69020.default.stderr
src/test/ui/consts/issue-69020.noopt.stderr
src/test/ui/consts/issue-69020.opt.stderr
src/test/ui/consts/issue-69020.opt_with_overflow_checks.stderr
src/test/ui/consts/issue-69020.rs

index 0bf40ce4b319eb192ebc162451f673903f622f09..1b1987f4dc31b32bf0f42fefc868fecbf207fb6f 100644 (file)
@@ -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
 
index 0bf40ce4b319eb192ebc162451f673903f622f09..1b1987f4dc31b32bf0f42fefc868fecbf207fb6f 100644 (file)
@@ -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
 
index 0bf40ce4b319eb192ebc162451f673903f622f09..1b1987f4dc31b32bf0f42fefc868fecbf207fb6f 100644 (file)
@@ -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
 
index 0bf40ce4b319eb192ebc162451f673903f622f09..1b1987f4dc31b32bf0f42fefc868fecbf207fb6f 100644 (file)
@@ -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
 
index 9f1ed862c7b44b4355f3e3d8136709299267965b..963ab01a33c24642b968d70ba6c75609afa39179 100644 (file)
@@ -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
 }