| // These are attributes of the implicit crate. Really this just needs to parse |
| // for completeness since .rs files linked from .rc files support this |
| // notation to specify their module's attributes |
| |
| //@ check-pass |
| |
| #![feature(rustc_attrs)] |
| #![rustc_dummy = "val"] |
| #![rustc_dummy = "val"] |
| #![rustc_dummy] |
| #![rustc_dummy(attr5)] |
| |
| // These are attributes of the following mod |
| #[rustc_dummy = "val"] |
| #[rustc_dummy = "val"] |
| mod test_first_item_in_file_mod {} |
| |
| mod test_single_attr_outer { |
| #[rustc_dummy = "val"] |
| pub static X: isize = 10; |
| |
| #[rustc_dummy = "val"] |
| pub fn f() {} |
| |
| #[rustc_dummy = "val"] |
| pub mod mod1 {} |
| |
| pub mod rustrt { |
| #[rustc_dummy = "val"] |
| extern "C" {} |
| } |
| } |
| |
| mod test_multi_attr_outer { |
| #[rustc_dummy = "val"] |
| #[rustc_dummy = "val"] |
| pub static X: isize = 10; |
| |
| #[rustc_dummy = "val"] |
| #[rustc_dummy = "val"] |
| pub fn f() {} |
| |
| #[rustc_dummy = "val"] |
| #[rustc_dummy = "val"] |
| pub mod mod1 {} |
| |
| pub mod rustrt { |
| #[rustc_dummy = "val"] |
| #[rustc_dummy = "val"] |
| extern "C" {} |
| } |
| |
| #[rustc_dummy = "val"] |
| #[rustc_dummy = "val"] |
| struct T { |
| x: isize, |
| } |
| } |
| |
| mod test_stmt_single_attr_outer { |
| pub fn f() { |
| #[rustc_dummy = "val"] |
| static X: isize = 10; |
| |
| #[rustc_dummy = "val"] |
| fn f() {} |
| |
| #[rustc_dummy = "val"] |
| mod mod1 {} |
| |
| mod rustrt { |
| #[rustc_dummy = "val"] |
| extern "C" {} |
| } |
| } |
| } |
| |
| mod test_stmt_multi_attr_outer { |
| pub fn f() { |
| #[rustc_dummy = "val"] |
| #[rustc_dummy = "val"] |
| static X: isize = 10; |
| |
| #[rustc_dummy = "val"] |
| #[rustc_dummy = "val"] |
| fn f() {} |
| |
| #[rustc_dummy = "val"] |
| #[rustc_dummy = "val"] |
| mod mod1 {} |
| |
| mod rustrt { |
| #[rustc_dummy = "val"] |
| #[rustc_dummy = "val"] |
| extern "C" {} |
| } |
| } |
| } |
| |
| mod test_attr_inner { |
| pub mod m { |
| // This is an attribute of mod m |
| #![rustc_dummy = "val"] |
| } |
| } |
| |
| mod test_attr_inner_then_outer { |
| pub mod m { |
| // This is an attribute of mod m |
| #![rustc_dummy = "val"] |
| // This is an attribute of fn f |
| #[rustc_dummy = "val"] |
| fn f() {} |
| } |
| } |
| |
| mod test_attr_inner_then_outer_multi { |
| pub mod m { |
| // This is an attribute of mod m |
| #![rustc_dummy = "val"] |
| #![rustc_dummy = "val"] |
| // This is an attribute of fn f |
| #[rustc_dummy = "val"] |
| #[rustc_dummy = "val"] |
| fn f() {} |
| } |
| } |
| |
| mod test_distinguish_syntax_ext { |
| pub fn f() { |
| format!("test{}", "s"); |
| #[rustc_dummy = "val"] |
| fn g() {} |
| } |
| } |
| |
| mod test_other_forms { |
| #[rustc_dummy] |
| #[rustc_dummy(word)] |
| #[rustc_dummy(attr(word))] |
| #[rustc_dummy(key1 = "val", key2 = "val", attr)] |
| pub fn f() {} |
| } |
| |
| mod test_foreign_items { |
| pub mod rustrt { |
| extern "C" { |
| #![rustc_dummy] |
| |
| #[rustc_dummy] |
| fn rust_get_test_int() -> isize; |
| } |
| } |
| } |
| |
| // FIXME(#623): - these aren't supported yet |
| /*mod test_literals { |
| #![str = "s"] |
| #![char = 'c'] |
| #![isize = 100] |
| #![usize = 100_usize] |
| #![mach_int = 100u32] |
| #![float = 1.0] |
| #![mach_float = 1.0f32] |
| #![nil = ()] |
| #![bool = true] |
| mod m {} |
| }*/ |
| |
| fn test_fn_inner() { |
| #![rustc_dummy] |
| } |
| |
| fn main() {} |