about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/ui/const-eval/issue-52442.rs13
-rw-r--r--src/test/ui/const-eval/issue-52442.stderr9
-rw-r--r--src/test/ui/const-eval/issue-52443.rs18
-rw-r--r--src/test/ui/const-eval/issue-52443.stderr51
4 files changed, 91 insertions, 0 deletions
diff --git a/src/test/ui/const-eval/issue-52442.rs b/src/test/ui/const-eval/issue-52442.rs
new file mode 100644
index 00000000000..755dc153d40
--- /dev/null
+++ b/src/test/ui/const-eval/issue-52442.rs
@@ -0,0 +1,13 @@
+// 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.
+
+fn main() {
+    [();  { &loop { break } as *const _ as usize } ]; //~ ERROR unimplemented expression type
+}
diff --git a/src/test/ui/const-eval/issue-52442.stderr b/src/test/ui/const-eval/issue-52442.stderr
new file mode 100644
index 00000000000..586c9fa22ce
--- /dev/null
+++ b/src/test/ui/const-eval/issue-52442.stderr
@@ -0,0 +1,9 @@
+error[E0019]: constant contains unimplemented expression type
+  --> $DIR/issue-52442.rs:12:14
+   |
+LL |     [();  { &loop { break } as *const _ as usize } ]; //~ ERROR unimplemented expression type
+   |              ^^^^^^^^^^^^^^
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0019`.
diff --git a/src/test/ui/const-eval/issue-52443.rs b/src/test/ui/const-eval/issue-52443.rs
new file mode 100644
index 00000000000..2ae94f6d642
--- /dev/null
+++ b/src/test/ui/const-eval/issue-52443.rs
@@ -0,0 +1,18 @@
+// 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.
+
+fn main() {
+    [(); & { loop { continue } } ]; //~ ERROR mismatched types
+    [(); loop { break }]; //~ ERROR mismatched types
+    [(); {while true {break}; 0}]; //~ ERROR constant contains unimplemented expression type
+    [(); { for _ in 0usize.. {}; 0}]; //~ ERROR calls in constants are limited to constant functions
+    //~^ ERROR constant contains unimplemented expression type
+    //~| ERROR could not evaluate repeat length
+}
diff --git a/src/test/ui/const-eval/issue-52443.stderr b/src/test/ui/const-eval/issue-52443.stderr
new file mode 100644
index 00000000000..3a145ba78d9
--- /dev/null
+++ b/src/test/ui/const-eval/issue-52443.stderr
@@ -0,0 +1,51 @@
+error[E0308]: mismatched types
+  --> $DIR/issue-52443.rs:12:10
+   |
+LL |     [(); & { loop { continue } } ]; //~ ERROR mismatched types
+   |          ^^^^^^^^^^^^^^^^^^^^^^^
+   |          |
+   |          expected usize, found reference
+   |          help: consider removing the borrow: `{ loop { continue } }`
+   |
+   = note: expected type `usize`
+              found type `&_`
+
+error[E0308]: mismatched types
+  --> $DIR/issue-52443.rs:13:17
+   |
+LL |     [(); loop { break }]; //~ ERROR mismatched types
+   |                 ^^^^^ expected (), found usize
+   |
+   = note: expected type `()`
+              found type `usize`
+
+error[E0019]: constant contains unimplemented expression type
+  --> $DIR/issue-52443.rs:14:11
+   |
+LL |     [(); {while true {break}; 0}]; //~ ERROR constant contains unimplemented expression type
+   |           ^^^^^^^^^^^^^^^^^^
+
+error[E0015]: calls in constants are limited to constant functions, tuple structs and tuple variants
+  --> $DIR/issue-52443.rs:15:21
+   |
+LL |     [(); { for _ in 0usize.. {}; 0}]; //~ ERROR calls in constants are limited to constant functions
+   |                     ^^^^^^^^
+
+error[E0019]: constant contains unimplemented expression type
+  --> $DIR/issue-52443.rs:15:21
+   |
+LL |     [(); { for _ in 0usize.. {}; 0}]; //~ ERROR calls in constants are limited to constant functions
+   |                     ^^^^^^^^
+
+error[E0080]: could not evaluate repeat length
+  --> $DIR/issue-52443.rs:15:10
+   |
+LL |     [(); { for _ in 0usize.. {}; 0}]; //~ ERROR calls in constants are limited to constant functions
+   |          ^^^^^^^^^^^--------^^^^^^^
+   |                     |
+   |                     calling non-const fn `<I as std::iter::IntoIterator><std::ops::RangeFrom<usize>>::into_iter`
+
+error: aborting due to 6 previous errors
+
+Some errors occurred: E0015, E0019, E0080, E0308.
+For more information about an error, try `rustc --explain E0015`.