| // Test that `#[rustc_*]` attributes are gated by `rustc_attrs` feature gate. |
| |
| #![feature(decl_macro)] |
| |
| mod rustc { pub macro unknown() {} } |
| mod unknown { pub macro rustc() {} } |
| |
| #[rustc::unknown] |
| //~^ ERROR attributes starting with `rustc` are reserved for use by the `rustc` compiler |
| //~| ERROR expected attribute, found macro `rustc::unknown` |
| //~| NOTE not an attribute |
| fn f() {} |
| |
| #[unknown::rustc] |
| //~^ ERROR attributes starting with `rustc` are reserved for use by the `rustc` compiler |
| //~| ERROR expected attribute, found macro `unknown::rustc` |
| //~| NOTE not an attribute |
| fn g() {} |
| |
| #[rustc_dummy] |
| //~^ ERROR use of an internal attribute [E0658] |
| //~| NOTE the `#[rustc_dummy]` attribute is an internal implementation detail that will never be stable |
| //~| NOTE the `#[rustc_dummy]` attribute is used for rustc unit tests |
| #[rustc_unknown] |
| //~^ ERROR attributes starting with `rustc` are reserved for use by the `rustc` compiler |
| //~| ERROR cannot find attribute `rustc_unknown` in this scope |
| fn main() {} |