//@ revisions: pass fail //@[pass] check-pass #![allow(internal_features)] #![feature(staged_api)] #![allow(dead_code)] #![stable(feature = "a", since = "1.1.1" )] /// When a free function with #[unstable_feature_bound(feat_bar)] is called by another /// free function, that function should be annotated with /// #[unstable_feature_bound(feat_bar)] too. #[stable(feature = "a", since = "1.1.1")] trait Foo { #[stable(feature = "a", since = "1.1.1")] fn foo() { } } #[stable(feature = "a", since = "1.1.1")] pub struct Bar; #[unstable_feature_bound(feat_bar)] #[unstable(feature = "feat_bar", issue = "none" )] impl Foo for Bar { fn foo() {} } #[unstable_feature_bound(feat_bar)] fn bar() { Bar::foo(); } #[cfg_attr(pass, unstable_feature_bound(feat_bar))] fn bar2() { bar(); //[fail]~^ERROR unstable feature `feat_bar` is used without being enabled. } fn main() {}