add gate tests and pacify tidy
This commit is contained in:
parent
bd9556956a
commit
04db4abbfc
8 changed files with 98 additions and 7 deletions
|
@ -576,12 +576,6 @@ declare_features! (
|
|||
/// Allows using and casting function pointers in a `const fn`.
|
||||
(active, const_fn_fn_ptr_basics, "1.48.0", Some(57563), None),
|
||||
|
||||
/// Allows trait bounds in `const fn`.
|
||||
(active, const_fn_trait_bound, "1.53.0", Some(57563), None),
|
||||
|
||||
/// Allows unsizing coercions in `const fn`.
|
||||
(active, const_fn_unsize, "1.53.0", Some(64992), None),
|
||||
|
||||
/// Allows to use the `#[cmse_nonsecure_entry]` attribute.
|
||||
(active, cmse_nonsecure_entry, "1.48.0", Some(75835), None),
|
||||
|
||||
|
@ -651,6 +645,12 @@ declare_features! (
|
|||
/// Allows `extern "wasm" fn`
|
||||
(active, wasm_abi, "1.53.0", Some(83788), None),
|
||||
|
||||
/// Allows trait bounds in `const fn`.
|
||||
(active, const_fn_trait_bound, "1.53.0", Some(57563), None),
|
||||
|
||||
/// Allows unsizing coercions in `const fn`.
|
||||
(active, const_fn_unsize, "1.53.0", Some(64992), None),
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// feature-group-end: actual feature gates
|
||||
// -------------------------------------------------------------------------
|
||||
|
|
|
@ -552,7 +552,7 @@ impl NonConstOp for UnsizingCast {
|
|||
&ccx.tcx.sess.parse_sess,
|
||||
sym::const_fn_unsize,
|
||||
span,
|
||||
"unsizing casts to types besides slices are not allowed in const fn"
|
||||
"unsizing casts to types besides slices are not allowed in const fn",
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
8
src/test/ui/consts/const_fn_trait_bound.gated.stderr
Normal file
8
src/test/ui/consts/const_fn_trait_bound.gated.stderr
Normal file
|
@ -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
|
||||
|
17
src/test/ui/consts/const_fn_trait_bound.rs
Normal file
17
src/test/ui/consts/const_fn_trait_bound.rs
Normal file
|
@ -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]
|
30
src/test/ui/consts/const_fn_trait_bound.stock.stderr
Normal file
30
src/test/ui/consts/const_fn_trait_bound.stock.stderr
Normal file
|
@ -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`.
|
8
src/test/ui/consts/const_fn_unsize.gated.stderr
Normal file
8
src/test/ui/consts/const_fn_unsize.gated.stderr
Normal file
|
@ -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
|
||||
|
16
src/test/ui/consts/const_fn_unsize.rs
Normal file
16
src/test/ui/consts/const_fn_unsize.rs
Normal file
|
@ -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]
|
12
src/test/ui/consts/const_fn_unsize.stock.stderr
Normal file
12
src/test/ui/consts/const_fn_unsize.stock.stderr
Normal file
|
@ -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`.
|
Loading…
Add table
Add a link
Reference in a new issue