about summary refs log tree commit diff
diff options
context:
space:
mode:
authorOliver Schneider <git-spam-no-reply9815368754983@oli-obk.de>2018-01-25 14:15:12 +0100
committerOliver Schneider <git-spam-no-reply9815368754983@oli-obk.de>2018-03-08 08:34:09 +0100
commitcf056615a85a14f7a07f30f9e2a7ec3d13e9237c (patch)
treecf2bdf8b7508201cf0ebb4715e1c08c3264f5a48
parent4f6c557c9d9c7cfade41cf473935a26ad54351d4 (diff)
downloadrust-cf056615a85a14f7a07f30f9e2a7ec3d13e9237c.tar.gz
rust-cf056615a85a14f7a07f30f9e2a7ec3d13e9237c.zip
Add test for attempting to use array indexing for conditional const eval
-rw-r--r--src/test/ui/const-eval/conditional_array_execution.rs17
-rw-r--r--src/test/ui/const-eval/conditional_array_execution.stderr26
2 files changed, 43 insertions, 0 deletions
diff --git a/src/test/ui/const-eval/conditional_array_execution.rs b/src/test/ui/const-eval/conditional_array_execution.rs
new file mode 100644
index 00000000000..41ceb609df5
--- /dev/null
+++ b/src/test/ui/const-eval/conditional_array_execution.rs
@@ -0,0 +1,17 @@
+// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+const X: u32 = 5;
+const Y: u32 = 6;
+const FOO: u32 = [X - Y, Y - X][(X < Y) as usize]; //~ E0080
+
+fn main() {
+    println!("{}", FOO); //~ E0080
+}
diff --git a/src/test/ui/const-eval/conditional_array_execution.stderr b/src/test/ui/const-eval/conditional_array_execution.stderr
new file mode 100644
index 00000000000..0e26db7ac08
--- /dev/null
+++ b/src/test/ui/const-eval/conditional_array_execution.stderr
@@ -0,0 +1,26 @@
+error[E0080]: constant evaluation error
+  --> $DIR/conditional_array_execution.rs:13:19
+   |
+13 | const FOO: u32 = [X - Y, Y - X][(X < Y) as usize]; //~ E0080
+   |                   ^^^^^ attempt to subtract with overflow
+   |
+note: inside call to FOO
+  --> $DIR/conditional_array_execution.rs:13:1
+   |
+13 | const FOO: u32 = [X - Y, Y - X][(X < Y) as usize]; //~ E0080
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0080]: constant evaluation error
+  --> $DIR/conditional_array_execution.rs:16:20
+   |
+16 |     println!("{}", FOO); //~ E0080
+   |                    ^^^ attempt to subtract with overflow
+   |
+note: inside call to main
+  --> $DIR/conditional_array_execution.rs:16:20
+   |
+16 |     println!("{}", FOO); //~ E0080
+   |                    ^^^
+
+error: aborting due to 2 previous errors
+