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/const_fn_trait_bound.gated.stderr8
-rw-r--r--src/test/ui/consts/const_fn_trait_bound.rs17
-rw-r--r--src/test/ui/consts/const_fn_trait_bound.stock.stderr30
-rw-r--r--src/test/ui/consts/const_fn_unsize.gated.stderr8
-rw-r--r--src/test/ui/consts/const_fn_unsize.rs16
-rw-r--r--src/test/ui/consts/const_fn_unsize.stock.stderr12
6 files changed, 91 insertions, 0 deletions
diff --git a/src/test/ui/consts/const_fn_trait_bound.gated.stderr b/src/test/ui/consts/const_fn_trait_bound.gated.stderr
new file mode 100644
index 00000000000..ded05cb17c5
--- /dev/null
+++ b/src/test/ui/consts/const_fn_trait_bound.gated.stderr
@@ -0,0 +1,8 @@
+error: fatal error triggered by #[rustc_error]
+  --> $DIR/const_fn_trait_bound.rs:17:1
+   |
+LL | fn main() {}
+   | ^^^^^^^^^
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/consts/const_fn_trait_bound.rs b/src/test/ui/consts/const_fn_trait_bound.rs
new file mode 100644
index 00000000000..b1ef820d827
--- /dev/null
+++ b/src/test/ui/consts/const_fn_trait_bound.rs
@@ -0,0 +1,17 @@
+// gate-test-const_fn_trait_bound
+
+// revisions: stock gated
+
+#![feature(rustc_attrs)]
+#![cfg_attr(gated, feature(const_fn_trait_bound))]
+
+const fn test1<T: std::ops::Add>() {}
+//[stock]~^ trait bounds
+const fn test2(_x: &dyn Send) {}
+//[stock]~^ trait bounds
+const fn test3() -> &'static dyn Send { loop {} }
+//[stock]~^ trait bounds
+
+
+#[rustc_error]
+fn main() {} //[gated]~ fatal error triggered by #[rustc_error]
diff --git a/src/test/ui/consts/const_fn_trait_bound.stock.stderr b/src/test/ui/consts/const_fn_trait_bound.stock.stderr
new file mode 100644
index 00000000000..2ad45f3afde
--- /dev/null
+++ b/src/test/ui/consts/const_fn_trait_bound.stock.stderr
@@ -0,0 +1,30 @@
+error[E0658]: trait bounds other than `Sized` on const fn parameters are unstable
+  --> $DIR/const_fn_trait_bound.rs:8:16
+   |
+LL | const fn test1<T: std::ops::Add>() {}
+   |                ^
+   |
+   = note: see issue #57563 <https://github.com/rust-lang/rust/issues/57563> for more information
+   = help: add `#![feature(const_fn_trait_bound)]` to the crate attributes to enable
+
+error[E0658]: trait bounds other than `Sized` on const fn parameters are unstable
+  --> $DIR/const_fn_trait_bound.rs:10:16
+   |
+LL | const fn test2(_x: &dyn Send) {}
+   |                ^^
+   |
+   = note: see issue #57563 <https://github.com/rust-lang/rust/issues/57563> for more information
+   = help: add `#![feature(const_fn_trait_bound)]` to the crate attributes to enable
+
+error[E0658]: trait bounds other than `Sized` on const fn parameters are unstable
+  --> $DIR/const_fn_trait_bound.rs:12:21
+   |
+LL | const fn test3() -> &'static dyn Send { loop {} }
+   |                     ^^^^^^^^^^^^^^^^^
+   |
+   = note: see issue #57563 <https://github.com/rust-lang/rust/issues/57563> for more information
+   = help: add `#![feature(const_fn_trait_bound)]` to the crate attributes to enable
+
+error: aborting due to 3 previous errors
+
+For more information about this error, try `rustc --explain E0658`.
diff --git a/src/test/ui/consts/const_fn_unsize.gated.stderr b/src/test/ui/consts/const_fn_unsize.gated.stderr
new file mode 100644
index 00000000000..8a65c274ca9
--- /dev/null
+++ b/src/test/ui/consts/const_fn_unsize.gated.stderr
@@ -0,0 +1,8 @@
+error: fatal error triggered by #[rustc_error]
+  --> $DIR/const_fn_unsize.rs:16:1
+   |
+LL | fn main() {}
+   | ^^^^^^^^^
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/consts/const_fn_unsize.rs b/src/test/ui/consts/const_fn_unsize.rs
new file mode 100644
index 00000000000..0cab3b0a031
--- /dev/null
+++ b/src/test/ui/consts/const_fn_unsize.rs
@@ -0,0 +1,16 @@
+// gate-test-const_fn_unsize
+
+// revisions: stock gated
+
+#![feature(rustc_attrs)]
+#![cfg_attr(gated, feature(const_fn_unsize))]
+
+use std::ptr::NonNull;
+
+const fn test() {
+    let _x = NonNull::<[i32; 0]>::dangling() as NonNull<[i32]>;
+    //[stock]~^ unsizing cast
+}
+
+#[rustc_error]
+fn main() {} //[gated]~ fatal error triggered by #[rustc_error]
diff --git a/src/test/ui/consts/const_fn_unsize.stock.stderr b/src/test/ui/consts/const_fn_unsize.stock.stderr
new file mode 100644
index 00000000000..cc746d4f175
--- /dev/null
+++ b/src/test/ui/consts/const_fn_unsize.stock.stderr
@@ -0,0 +1,12 @@
+error[E0658]: unsizing casts to types besides slices are not allowed in const fn
+  --> $DIR/const_fn_unsize.rs:11:14
+   |
+LL |     let _x = NonNull::<[i32; 0]>::dangling() as NonNull<[i32]>;
+   |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |
+   = note: see issue #64992 <https://github.com/rust-lang/rust/issues/64992> for more information
+   = help: add `#![feature(const_fn_unsize)]` to the crate attributes to enable
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0658`.