Skip to content

Commit

Permalink
Add feature gate tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
crlf0710 committed Jul 30, 2021
1 parent 2dc86a6 commit ac354cf
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 7 deletions.
2 changes: 1 addition & 1 deletion compiler/rustc_feature/src/active.rs
Expand Up @@ -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
Expand Down
13 changes: 13 additions & 0 deletions src/test/ui/feature-gates/feature-gate-trait_upcasting.rs
@@ -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]
}
12 changes: 12 additions & 0 deletions src/test/ui/feature-gates/feature-gate-trait_upcasting.stderr
@@ -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`.
2 changes: 1 addition & 1 deletion src/test/ui/issues/issue-11515.rs
Expand Up @@ -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]
}
10 changes: 5 additions & 5 deletions src/test/ui/issues/issue-11515.stderr
@@ -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`.

0 comments on commit ac354cf

Please sign in to comment.