//@ revisions: pass fail //@[pass] check-pass #![allow(internal_features)] #![feature(staged_api)] #![allow(dead_code)] #![unstable(feature = "feat_foo", issue = "none" )] #![cfg_attr(fail, feature(feat_foo))] /// In staged-api crate, using an unstable impl requires /// #[unstable_feature_bound(..)], not #[feature(..)]. pub trait Foo { fn foo(); } pub struct Bar; #[unstable_feature_bound(feat_foo)] impl Foo for Bar { fn foo() {} } #[cfg_attr(pass, unstable_feature_bound(feat_foo))] fn bar() { Bar::foo(); //[fail]~^ ERROR: unstable feature `feat_foo` is used without being enabled. } fn main() {}