about summary refs log tree commit diff
diff options
context:
space:
mode:
authorDylan MacKenzie <ecstaticmorse@gmail.com>2019-09-17 16:25:26 -0700
committerDylan MacKenzie <ecstaticmorse@gmail.com>2019-09-28 07:06:51 -0700
commit457c3aa6722cd8d2599c7f78347b2f8f586f3527 (patch)
tree8cedd346aa409f0e242ae90fc59b0bcb03c4ddd7
parent717c64e18884c20a11603f181b207ff280b13f9a (diff)
downloadrust-457c3aa6722cd8d2599c7f78347b2f8f586f3527.tar.gz
rust-457c3aa6722cd8d2599c7f78347b2f8f586f3527.zip
Add additional `const` tests
-rw-r--r--src/test/ui/consts/const-if.rs5
-rw-r--r--src/test/ui/consts/const-if.stderr15
-rw-r--r--src/test/ui/consts/const-multi-ref.rs11
-rw-r--r--src/test/ui/consts/const-multi-ref.stderr15
4 files changed, 46 insertions, 0 deletions
diff --git a/src/test/ui/consts/const-if.rs b/src/test/ui/consts/const-if.rs
new file mode 100644
index 00000000000..9bb5bcc499e
--- /dev/null
+++ b/src/test/ui/consts/const-if.rs
@@ -0,0 +1,5 @@
+const _X: i32 = if true { 5 } else { 6 };
+//~^ ERROR constant contains unimplemented expression type
+//~| ERROR constant contains unimplemented expression type
+
+fn main() {}
diff --git a/src/test/ui/consts/const-if.stderr b/src/test/ui/consts/const-if.stderr
new file mode 100644
index 00000000000..655fcdae587
--- /dev/null
+++ b/src/test/ui/consts/const-if.stderr
@@ -0,0 +1,15 @@
+error[E0019]: constant contains unimplemented expression type
+  --> $DIR/const-if.rs:1:20
+   |
+LL | const _X: i32 = if true { 5 } else { 6 };
+   |                    ^^^^
+
+error[E0019]: constant contains unimplemented expression type
+  --> $DIR/const-if.rs:1:17
+   |
+LL | const _X: i32 = if true { 5 } else { 6 };
+   |                 ^^^^^^^^^^^^^^^^^^^^^^^^
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0019`.
diff --git a/src/test/ui/consts/const-multi-ref.rs b/src/test/ui/consts/const-multi-ref.rs
new file mode 100644
index 00000000000..498e99e668b
--- /dev/null
+++ b/src/test/ui/consts/const-multi-ref.rs
@@ -0,0 +1,11 @@
+const _X: i32 = {
+    let mut a = 5;
+    let p = &mut a;      //~ ERROR references in constants may only refer to immutable values
+
+    let reborrow = {p};  //~ ERROR references in constants may only refer to immutable values
+    let pp = &reborrow;
+    let ppp = &pp;
+    ***ppp
+};
+
+fn main() {}
diff --git a/src/test/ui/consts/const-multi-ref.stderr b/src/test/ui/consts/const-multi-ref.stderr
new file mode 100644
index 00000000000..9e525ef9aac
--- /dev/null
+++ b/src/test/ui/consts/const-multi-ref.stderr
@@ -0,0 +1,15 @@
+error[E0017]: references in constants may only refer to immutable values
+  --> $DIR/const-multi-ref.rs:3:13
+   |
+LL |     let p = &mut a;
+   |             ^^^^^^ constants require immutable values
+
+error[E0017]: references in constants may only refer to immutable values
+  --> $DIR/const-multi-ref.rs:5:21
+   |
+LL |     let reborrow = {p};
+   |                     ^ constants require immutable values
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0017`.