Add feature gate tests.

This commit is contained in:
Charles Lew 2021-06-13 18:42:11 +08:00
parent 2dc86a6450
commit ac354cf5ce
5 changed files with 32 additions and 7 deletions

View File

@ -685,7 +685,7 @@ declare_features! (
/// Allows upcasting trait objects via supertraits.
/// Trait upcasting is casting, e.g., `dyn Foo -> dyn Bar` where `Foo: Bar`.
(active, trait_upcasting, "1.56.0", Some(65991), None),
(incomplete, trait_upcasting, "1.56.0", Some(65991), None),
// -------------------------------------------------------------------------
// feature-group-end: actual feature gates

View File

@ -0,0 +1,13 @@
trait Foo {}
trait Bar: Foo {}
impl Foo for () {}
impl Bar for () {}
fn main() {
let bar: &dyn Bar = &();
let foo: &dyn Foo = bar;
//~^ ERROR trait upcasting is experimental [E0658]
}

View File

@ -0,0 +1,12 @@
error[E0658]: trait upcasting is experimental
--> $DIR/feature-gate-trait_upcasting.rs:11:25
|
LL | let foo: &dyn Foo = bar;
| ^^^
|
= note: see issue #65991 <https://github.com/rust-lang/rust/issues/65991> for more information
= help: add `#![feature(trait_upcasting)]` to the crate attributes to enable
error: aborting due to previous error
For more information about this error, try `rustc --explain E0658`.

View File

@ -6,5 +6,5 @@ struct Test {
fn main() {
let closure: Box<dyn Fn() + 'static> = Box::new(|| ());
let test = box Test { func: closure }; //~ ERROR mismatched types
let test = box Test { func: closure }; //~ ERROR trait upcasting is experimental [E0658]
}

View File

@ -1,12 +1,12 @@
error[E0308]: mismatched types
error[E0658]: trait upcasting is experimental
--> $DIR/issue-11515.rs:9:33
|
LL | let test = box Test { func: closure };
| ^^^^^^^ expected trait `FnMut`, found trait `Fn`
| ^^^^^^^
|
= note: expected struct `Box<(dyn FnMut() + 'static)>`
found struct `Box<(dyn Fn() + 'static)>`
= note: see issue #65991 <https://github.com/rust-lang/rust/issues/65991> for more information
= help: add `#![feature(trait_upcasting)]` to the crate attributes to enable
error: aborting due to previous error
For more information about this error, try `rustc --explain E0308`.
For more information about this error, try `rustc --explain E0658`.