Skip to content

Commit

Permalink
add gate tests and pacify tidy
Browse files Browse the repository at this point in the history
  • Loading branch information
RalfJung committed Apr 19, 2021
1 parent bd95569 commit 04db4ab
Show file tree
Hide file tree
Showing 8 changed files with 98 additions and 7 deletions.
12 changes: 6 additions & 6 deletions compiler/rustc_feature/src/active.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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),

Expand Down Expand Up @@ -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
// -------------------------------------------------------------------------
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_mir/src/transform/check_consts/ops.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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",
)
}
}
Expand Down
8 changes: 8 additions & 0 deletions src/test/ui/consts/const_fn_trait_bound.gated.stderr
Original file line number Diff line number Diff line change
@@ -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 changes: 17 additions & 0 deletions src/test/ui/consts/const_fn_trait_bound.rs
Original file line number Diff line number Diff line change
@@ -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 changes: 30 additions & 0 deletions src/test/ui/consts/const_fn_trait_bound.stock.stderr
Original file line number Diff line number Diff line change
@@ -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 changes: 8 additions & 0 deletions src/test/ui/consts/const_fn_unsize.gated.stderr
Original file line number Diff line number Diff line change
@@ -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 changes: 16 additions & 0 deletions src/test/ui/consts/const_fn_unsize.rs
Original file line number Diff line number Diff line change
@@ -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 changes: 12 additions & 0 deletions src/test/ui/consts/const_fn_unsize.stock.stderr
Original file line number Diff line number Diff line change
@@ -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`.

0 comments on commit 04db4ab

Please sign in to comment.